程序的内存区域划分

来源:互联网 发布:怎么知道某个ip的域名 编辑:程序博客网 时间:2024/04/29 07:00

按照程序分段来看,ELF可执行程序就分为3段:
# size a.out
1792 + 381 + 0 = 2173 (text, data, bss)
data: 已经初始化的全局变量和常量字符串等
bss: 没有初始化的全局变量
data + bss 为全局数据区;
text + data + bss 为静态存储区;

堆区和栈区是程序运行时分配的
堆区: 存放动态数据;
栈区: 存放局部数据. 

例如:
char arr[1024][1024];
void main()
{
    exit(0);
}

# ls -l a.out
-rwxr-xr-x   1 lzhao    sigdev      5028 Jul 11 15:33 a.out*
# size a.out
1680 + 348 + 1048576 = 1050604      //1024*1024=1048576

char arr[1024][1024]={0};
void main()
{
    exit(0);
}

# ls -l a.out
-rwxr-xr-x   1 lzhao    sigdev   1053604 Jul 11 15:32 a.out*
# size a.out
1680 + 1048924 + 0 = 1050604

原创粉丝点击