以下摘自<http://www.cnblogs.com/skynet/archive/2011/03/07/1975479.html>
变量在内存中的布局可以总结为如下:
- 变量(函数外):如果未初始化,则存放在BSS段;否则存放在data段
- 变量(函数内):如果没有指定static修饰符,则存放在栈中;否则同上
- 常量:存放在文本段.text
- 函数参数:存放在栈或寄存器中
内存可以分为以下几段:
- 文本段:包含实际要执行的代码(机器指令)和常量。它通常是共享的,多个实例之间共享文本段。文本段是不可修改的。
- 初始化数据段:包含程序已经初始化的全局变量,.data。
- 未初始化数据段:包含程序未初始化的全局变量,.bbs。该段中的变量在执行之前初始化为0或NULL。
- 栈:由系统管理,由高地址向低地址扩展。
- 堆:动态内存,由用户管理。通过malloc/alloc/realloc、new/new[]申请空间,通过free、delete/delete[]释放所申请的空间。由低地址想高地址扩展。