1在可执行文件中有.text、.data、.bss等部分。
2、,还有程序内存段(代码、初始化数据、未初始化数据、堆、堆栈),它们可以从可执行文件中的部分映射。
以上每一个,我都能理解它是什么,节是放在磁盘中,而段是放在内存中,而程序是加载的。当程序开始运行时,初始化的数据、BSS、堆段都放在数据段中,下表描述了更多细节:
此表来自http://www.tenouk.com/ModuleW.html表w.6:

我的问题是地址空间段和程序内存段在内存中的区别是什么?
发布于 2013-02-07 12:19:50
他们只是用不同的方式来指记忆中相同的片段。
处理这些节/段的确切方式显然是特定的实现--文件的布局取决于所使用的特定可执行格式和链接器,而内存中程序的布局又取决于使用的可执行格式和OS加载器。作为这方面的一个例子,根据对PE文件格式的讨论-- http://msdn.microsoft.com/en-us/library/ms809762.aspx --用于从可执行文件中删除.bss节并将其与.data部分结合起来的Borland链接器之一--我怀疑根据所使用的OS/链接器/可执行格式的不同风格,有许多类似的不同类型的示例。
发布于 2013-02-07 03:15:18
在记忆中没有什么不同。
但是,通常他们有分开的缓存。此外,在虚拟内存表中,代码段被标记为代码段,因此尝试执行不属于代码段的内容将使程序崩溃。
请注意,这实际上因平台而异。
https://stackoverflow.com/questions/14742493
复制相似问题