C程序。。内存分配的问题。。。。。。。。。。

sshziliao 2013-02-22 11:56:03
我在百度文库中看到C语言编译过程详解:
http://wenku.baidu.com/view/8976aeb765ce05087632130a.html

其中讲到:编译后的目标文件OBJ由段组成。通常一个目标文件中至少有两个段:
1) 代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。
2) 数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。

那么我想问:
1.编译后的目标文件OBJ的结构是像汇编程序那样,由段组成的吗?(照文中的意思,编译后的OBJ是分段形式的,是由段组成的)。
2.编译后的obj文件有没有堆段、栈段????

还有:全局变量在编译完毕后,其在data area区的逻辑地址(段地址:偏移量)是固定不变的,
从逻辑地址这个角度来说,全局变量的内存地址是不变的。

...全文
188 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
stormier 2013-02-24
  • 打赏
  • 举报
回复
引用 3 楼 sshziliao 的回复:
引用 1 楼 gumh 的回复:这些基础的东西还是系统地学习比较好, 靠baidu学习,事倍功半。请问大侠,哪门课程讲这些内容????????
编译原理。堆栈的开辟应该是动态的,不在静态数据段
牧风 2013-02-24
  • 打赏
  • 举报
回复
看汇编原理。
AnYidan 2013-02-22
  • 打赏
  • 举报
回复
自己上网找,早就知道了
「已注销」 2013-02-22
  • 打赏
  • 举报
回复
推荐你一本书,《程序员的自我修养——链接 装载与库》,讲得很深入。
sshziliao 2013-02-22
  • 打赏
  • 举报
回复
引用 1 楼 gumh 的回复:
这些基础的东西还是系统地学习比较好, 靠baidu学习,事倍功半。
请问大侠,哪门课程讲这些内容????????
赵4老师 2013-02-22
  • 打赏
  • 举报
回复
windows:dumpbin xxx.obj linux:objdump xxx.o
prajna 2013-02-22
  • 打赏
  • 举报
回复
这些基础的东西还是系统地学习比较好, 靠baidu学习,事倍功半。

70,021

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧