一张图
英文版:
解释
- 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段
...
}