好吧,众所周知GlobalAlloc/GlobalFree/HeapAlloc/HeapFree API正在管理默认堆或用户定义堆(CreateHeap),每个堆有一些段,每个段都有多个块。它被称为The Freelist而后备列表正在管理每个堆中的空闲块。VirtualAlloc/VirtualFree vs Heap函数
在扭转一块软件,我发现使用VirtualAlloc分配一大块内存。基本上我不能说它是一个堆,因为这个块是直接从虚拟地址空间分配的,并没有显示任何堆的迹象。 但是应用程序中的一些例程将设置自定义Freelist,该应用程序本身由应用程序管理,并用于定义和控制使用VirtualAlloc分配的大块的空闲部分。
作为应用程序设置了一个Freelist结构来管理它,我可以称这个块为HEAP吗?
如果你愿意,你可以称它为香蕉。你真的想知道什么? –
我实际上正在破坏该块并覆盖应用程序设置的flink/blink指针,我想写一篇关于它的文章,并且我很害怕将这个分配的块称为堆而被误认为是!因为它不是,它只是应用程序编辑的VAS中的一大块内存,所以它只能获得堆的小特性! – JohnnyCat
所以你回答了你自己的问题,这不是一堆。 – Damon