常见段
.text / .code
【通常属于只读,代码段是可共享的,从而节省内存资源】
存放程序执行的机器指令(这部分区域的大小在程序运行前就已经确定)
.data
【静态内存分配,其生命周期与程序的执行周期相同】
- 被初始化的全局变量
- 静态变量(包括全局静态变量和局部静态变量)
- 常量数据
- class中的初始化的静态成员
.bss
【静态内存分配,变量在程序开始执行前不会被分配具体的内存值,而是在程序执行时才被赋予初始值】
- 未初始化的全局变量
- 未初始化的静态变量(局部变量+全局变量)
- 初始化为0的全局变量or静态变量
- class中的未初始化的静态成员
HEAP
【动态内存分配,需要显式地申请和释放空间】
程序手动malloc和free的区域
STACK
【栈由操作系统分配和管理,不需要程序员显式管理】
用于存放函数的参数值、局部变量的值,以及在进行任务切换时存放当前任务的上下文内容。
常见问题汇总
0x1(单选)下面哪种变量定义不当,可能导致堆栈溢出
A. 静态全局变量
B. 动态全局变量
C. 静态局部变量
D. 动态局部变量(v)