Memory management Windows7中的堆信息

Memory management Windows7中的堆信息,memory-management,heap,windows-7-x64,Memory Management,Heap,Windows 7 X64,我在win7中做了一个简单的实验,使用以下代码测试其内存分配堆的组织: char*指针[50] for(i=0;i您想要这样做的想法非常可怕。这是未记录的信息,可能会在不通知的情况下更改,可能会在调试和非调试版本之间变化,等等。我强烈建议您找到另一种方法,例如使用您自己的分配器存储长度 在回答您的问题时,我知道存储的信息是一个正向和反向链接以及一些标志。这些链接可能存储在使用XOR方案的单个指针中。可能还有一个哨兵 如果你真的必须知道这个问题的答案,那么很容易找到。只需在Visual Studi

我在win7中做了一个简单的实验,使用以下代码测试其内存分配堆的组织:

char*指针[50]


for(i=0;i您想要这样做的想法非常可怕。这是未记录的信息,可能会在不通知的情况下更改,可能会在调试和非调试版本之间变化,等等。我强烈建议您找到另一种方法,例如使用您自己的分配器存储长度

在回答您的问题时,我知道存储的信息是一个正向和反向链接以及一些标志。这些链接可能存储在使用XOR方案的单个指针中。可能还有一个哨兵

如果你真的必须知道这个问题的答案,那么很容易找到。只需在Visual Studio中编译并运行你的程序,然后进入C运行时库代码,用于
new
。所有声明和代码都在那里供你阅读。完整的注释,非常简单的内容

请注意:这是与Windows 7 API有关的<强> > > > >这是与C++编译器相关的运行库(我假设是VisualStudio)。


Windows 7内部有几个内存分配器,但这是完全不同的故事。

谢谢。所以迄今为止还没有人破解WINDOWS7中的堆分配机制?@ Read Daul:你是怎么得到这个想法的?你的实验只涉及C++运行时库,这是众所周知的。如果你想解决WINAPI,那就是一个。完全不同的故事。请参见编辑。那么如何触发Windows7 API的堆分配?直接使用
HeapAlloc()
。@RichardMorning:是的,
HeapAlloc()
可以在
GetProcessHeap()提供的默认每个进程堆上进行分配
。它有很好的文档记录,因为它是许多漏洞的来源。如果你感兴趣的话,有比这更好的网站。