一张图

英文版:

解释
- stack段:局部变量存放区域。函数中的局部变量都是存放在栈中
- data段:初始化为非0全局变量和初始化为非0静态局部变量(static)
- bss段:(未初始化或者初始化为0的) 全局变量和静态局部变量
- text段:存放代码,only read
- heap:自己申请的内存区域(malloc和free)
上代码
#include <stdio.h>
int a = 0; //bss段(全局数据区)
int a1 = 1; //data段
int main(int argc, char **argv)
{
int b; //stack段(栈中)
static int c = 1; //data段
static int c1 = 0; //bss段
int *p; //stack段
p = (int *)malloc(sizeof(int)); //heap段
free(p); //heap段
...
}
本文深入讲解了内存布局的五个关键区域:stack堆栈用于存放局部变量;data数据段存放初始化的全局变量;bss段存放未初始化或初始化为0的全局变量;text段存放代码,只读;heap堆用于动态分配内存。通过一张图清晰展示内存各部分的作用及相互关系。
1420

被折叠的 条评论
为什么被折叠?



