当前位置:  技术问答>linux和unix

关于C程序存储空间布局的问题

    来源: 互联网  发布时间:2016-12-14

    本文导语:  想问下初始化数据段和非初始化数据段的区别。 比如: int a; int b = 10; int main() { ....... } 上面的变量a和b,是处于哪个数据段。 然后,我下面的理解是否正确: 初始化数据段中的数据是否可以理解成是C程序中...

想问下初始化数据段和非初始化数据段的区别。
比如:

int a;
int b = 10;
int main()
{
.......
}

上面的变量a和b,是处于哪个数据段。
然后,我下面的理解是否正确:
初始化数据段中的数据是否可以理解成是C程序中任何函数外的数据声明,该数据被显示的初始化过,如变量b;
非初始化数据段则是C程序中任何函数外的变量声明,该变量未被显示初始化,如变量a。

|
楼主没有明白为什么有初始化数据段和未初始化数据段
未初始化段又称为BSS(Block Started by Symbol)段,用于存放未初始化的全局变量和静态变量,而初始化数据段存放初始化的全局变量和静态变量。
BSS段具体体现为一个占位符,不占用exe空间,其内容由操作系统初始化(清零),而data段需要占用,其内容由程序初始化。
BSS段之所以不占用exe文件空间是因为bss段都是一些没有初始化的变量,所以没有必要把这些变量的值给存储下来,只要记录下分配多大的空间就行了,到时候告诉loader需要分配多大的空间。
比如全局数据int a[100];这里没有初始化,所以没必要为他们分配100个int的空间,只需要告诉loader运行时候需要100个int的空间,这些空间的值都会被设置为缺省0
在Unix系统中,可以使用size a.out命令查看段大小。

    
 
 

您可能感兴趣的文章:

  • C++程序的内存不同的数据段及堆栈布局
  • 浙ICP备11055608号-3 iis7站长之家
  • 如何实现插上多个USB存储设备,程序区分他们的一一对应关系?
  • 怎么写个小程序,让存储过程在 Unix 上跑起来
  • 关于RPM安装管理程序里软件存储库的问题
  • solaris上的C程序,编译报错: 存储类只能使用register,奇怪,奇怪!
  • 有谁做过把一张图片大小成比例缩小(相应图形的存储大小也要缩小)的Java程序吗?
  • map存储的大小和程序大小相差很大
  • UNIX环境高级编程第四章的一个程序例子里面的指针存储字符串问题
  • 编写一个控制台程序,声明一个double类型的变量并且将其初始化为1234.5678。然后取出这个值的整数部分,把它存储在一个类型为long的变量
  • 在SQL触发器或存储过程中获取在程序登录的用户
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c/c++服务器程序内存泄露问题分析及解决
  • unix程序中调用其他程序的问题
  • 走虚拟网卡内核程序和走物理网卡应用程序结合问题
  • wine中安装windows程序,程序崩溃的问题
  • 一个信息添加,修改,删除,查询的问题,程序出了一个问题实在不知道为什么,各位帮看一下程序如下
  • 请问linux下一个很简单的问题:我们的控制台下直接输入某个程序名就可以执行该程序,原理是什么?
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • 程序发布的问题(动态连接库的问题)
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 紧急问题:我启动一个java程序之后用ps一看,为和显示我启动了多个程序?然后我kill-9第一个pid之后,又全部没了
  • ./configure时,提示 missing /usr/.../version.h文件?是系统问题?还是安装程序的问题?
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 请教多线程程序的内存占用问题
  • 关于软件或者程序的源代码问题??
  • 几个Linux应用程序开发的问题请教LINUX程序员!
  • linux可执行程序运行速度问题
  • 多线程网络通讯程序的稳定性问题
  • 程序输出的问题
  • linux基础问题,configure,make生成应用程序问题
  • shell脚本变量与应用程序同步的问题
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3