堆和栈

1、栈区(stack) — 由编译器自动分配释放,存放函数的参数值,局部变量的值等。(临时变量,退出该作用域就会自动释放)

2、堆区(heap) — 程序员分配释放,若程序员不释放,程序结束时可能由OS回收。(malloc变量,通过free函数释放)

3、全局区(static) — 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。 

4、文字常量区 — 常量字符串就是放在这里的。程序结束后由系统释放  

5、程序代码区 — 存放函数体的二进制代码。  

Keil中启动引导文件定义堆和栈区的大小

Stack_Size      EQU     0x00000800
 
                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
                                                  
; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
 
Heap_Size       EQU     0x00000400
 
                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit
6、
栈:向低地址扩展
堆:向高地址扩展

posted on 2013-04-27 14:09  先天圣体道胎  阅读(296)  评论(0)    收藏  举报

导航