免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2857 | 回复: 6
打印 上一主题 下一主题

C程序存储区问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-19 14:03 |只看该作者 |倒序浏览
各位大侠,小弟有个关于C程序存储区问题要请教.
《UNIX高级编程》7.6节介绍了C程序存储区,它分为:(从低地址向高地址依次排列
1.正文段
2.初始化数据段
3.非初始化数据段(bss)
4.堆
5.栈

小弟想请教:
1.正文段是否就是ANSI C中所说的程序区?
2.初始化数据段与非初始化数据段是否为ANSI C中提到的静态存储区,他们之间如何区分?如何详细定义这两个概念?
例如:
int vari = 14;       //存放在初始化数据段中
long sum[1000];     //存放在非初始化数据段中
其存放是如何界定呢?
3.堆与栈之间有界限吗?

论坛徽章:
0
2 [报告]
发表于 2007-12-19 14:25 |只看该作者
正文段, 也就是.text段, 以及已初始化的数据, 即.data段相当于是一个可执行程序里面的内容.  在最初加载程序的时候, 就将可执行程序里面的正文段以及已初始化段的内容映射过来.
而未初始化数据段, 即.bss, 则是在加载的时候映射成0的.

对于全局变量而言, 如果已经初始化了, 则存放在初始化数据区中, 否则就在未初始化数据段中.

堆与栈之间有界限, 其实在堆与栈之间还有一个区域, 即共享库区域, 比如平时用到的C库函数之类的就在这一个区域中.

如果你对这方面比较感兴趣的话, 可以看看<深入理解计算机系统>与<链接与加载>这两份资料. 就是讲这些方面的.

论坛徽章:
0
3 [报告]
发表于 2007-12-19 15:33 |只看该作者

回复 #2 scutan 的帖子

<深入理解计算机系统>与<链接器与加载器>都是很棒的资料
谢谢!

论坛徽章:
0
4 [报告]
发表于 2007-12-19 17:36 |只看该作者

回复 #2 scutan 的帖子

看看深入浅出linux内核,你会很好的明白程序内存区的分配和管理@!

论坛徽章:
0
5 [报告]
发表于 2007-12-19 17:39 |只看该作者

回复 #4 wubowhut 的帖子

有这本书吗? 给个链接介绍一下.

论坛徽章:
0
6 [报告]
发表于 2007-12-19 21:21 |只看该作者
哪位大哥能提供这两本书的下载地址?<<深入理解计算机系统>>与<<链接与加载>>

论坛徽章:
0
7 [报告]
发表于 2007-12-19 22:21 |只看该作者
后一本书在这儿有.
http://www.linuxforum.net/forum/ ... &o=7&fpart=

深入理解那本书我也有电子版, 不过太大了. 网上应该有, 你百度或google一下 .
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP