天天看点

进程内存管理

以下摘自<>

进程内存管理

变量在内存中的布局可以总结为如下:

变量(函数外):如果未初始化,则存放在BSS段;否则存放在data段

变量(函数内):如果没有指定static修饰符,则存放在栈中;否则同上

常量:存放在文本段.text

函数参数:存放在栈或寄存器中

内存可以分为以下几段:

文本段:包含实际要执行的代码(机器指令)和常量。它通常是共享的,多个实例之间共享文本段。文本段是不可修改的。

初始化数据段:包含程序已经初始化的全局变量,.data。

未初始化数据段:包含程序未初始化的全局变量,.bbs。该段中的变量在执行之前初始化为0或NULL。

栈:由系统管理,由高地址向低地址扩展。

堆:动态内存,由用户管理。通过malloc/alloc/realloc、new/new[]申请空间,通过free、delete/delete[]释放所申请的空间。由低地址想高地址扩展。