C程序的存储空间布局

来源:互联网 发布:卖家淘宝客教程 编辑:程序博客网 时间:2024/05/18 20:12
1.C程序的组成部分:
1)程序正文/机器指令:可共享
2)初始化数据段:存储全局变量/静态变量等,存储在该数据段中的数据是在程序中已赋初值的
如: int maxcount = 99;
3)非初始化数据段:存储全局变量/静态变量等,存储在该数据段中的数据是在程序中未赋初值的,程序开始执行之前,内核会将该数据段中的变量赋值为0或空指针(即我们所谓的全局变量的自动初始化)
如: long num[100];
4)栈:存储自动变量以及函数调用时需要保存的信息,如函数返回地址、调用时某些寄存器的值等
5)堆:用户动态分配,程序员负责内存的分配和回收,该部分位于非初始化数据段和栈之间

2.C程序组成部分的典型安排方式:(该图截自《UNIX环境高级编程(第二版)》)
C程序的存储空间布局
存放在程序文件中的只有正文段和初始化数据段,未初始化数据段不存储,因为内核在开始执行程序之前会将他们都设置为0。
linux size命令报告一个程序的正文段、初始化数据段、未初始化数据段(被称为bss段)的长度
原创粉丝点击