内存 | 存储内容 |
---|---|
栈区 | 主要用来存放局部变量, 传递参数, 存放函数的返回地址。.esp 始终指向栈顶, 栈中的数据越多, esp的值越小。 |
堆区 | 用于存放动态分配的对象, 当你使用 malloc和new 等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息, 所以你 能够 free和delete它们。 |
数据区 | 全局,静态和常量是分配在数据区中的,数据区包括bss(未初始化数据区)和初始化数据区。 |
代码区 | 是个只读区,存放了程序的代码。任何尝试对该区的写操作会导致段违法出错。代码区是被多个运行该可执行文件的进程所共享的。 |
注:
(1)、堆向高内存地址生长;
(2)、栈向低内存地址生长;
(3)、堆和栈相向而生,堆和栈之间有个临界点,称为 stkbrk。