首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Windows NT/10上将堆分配给可移植的可执行文件?

如何在Windows NT/10上将堆分配给可移植的可执行文件?
EN

Stack Overflow用户
提问于 2017-03-08 01:00:30
回答 1查看 246关注 0票数 1

我目前正在研究可移植可执行文件格式,我已经了解了9个常见的部分,如.code、.data、.rdata、.debug等等。然而,我所读到的文件中似乎没有提到的一条信息是程序的“堆”在内存中的位置(地址空间),以及如何分配它。它是这些数据部分的一部分吗?我听说它出现在.bss部分之后,但这些只是谣言。当Windows加载程序加载PE时,是否甚至有一组堆大小(当然是针对每个特定的exe ),如果是的话,它的基础是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-03-08 01:39:10

IMAGE_OPTIONAL_HEADER中有几个字段控制默认进程堆(GetProcessHeap)的初始大小,但是堆本身并不是PE布局的一部分。

程序可以使用HeapCreate创建额外的堆。堆还可以在不同的模式(序列化或不序列化)中运行,还有一个低碎屑堆实现。

您可以使用VMMap查看堆在虚拟内存中的位置,但不应该依赖这些信息。如果您重新启动计算机,则为ASLR会移动他们

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

https://stackoverflow.com/questions/42661142

复制
相关文章

相似问题

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