首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么要在PE文件中创建不同的代码/数据/bss部分?

为什么要在PE文件中创建不同的代码/数据/bss部分?
EN

Stack Overflow用户
提问于 2015-09-11 23:20:02
回答 2查看 89关注 0票数 0

作为对可执行文件格式有粗略了解的人,我发现MSDN文档中的以下#pragma指令非常有趣:

在PE/OBJ文件中将某些变量和函数体放置在不同的.section中的好处究竟是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-11 23:30:27

好的,传统的文字部分是常量(例如static const char* const = "hello world";),因为它们位于const_seg区域,如果它们位于data_segbss_seg中,它们可能是可变的(尽管由于明显的原因,不能就地调整大小)。

另一个原因(同样)可能是在编译时预初始化复杂的数据结构,但允许在运行时对其进行操作,例如,大量的已知值哈希表,尽管这需要编译器的支持。

票数 1
EN

Stack Overflow用户

发布于 2015-09-11 23:40:28

改变段主要用于嵌入式软件,将一些数据映射到不同的物理存储区域。例如,您可能希望将一些变量保存在EEPROM中,在这种情况下,您可以在链接时定义一个要映射到EEPROM地址的特殊段。

对于WIN32可执行文件,它的用处有限。您可能希望使用它在进程的各个实例之间共享一些内存,但是如果试图篡改内存映射,您最好知道自己在做什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32533447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档