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