Windows如何跟踪VirtualAllocdBlocks的大小?

Windows如何跟踪VirtualAllocdBlocks的大小?,windows,heap,windbg,Windows,Heap,Windbg,我想知道windows如何跟踪“VirtualAllocdBlocks”的大小。根据WinDBG,内存块在双链接列表中管理。但是这个结构(_LIST_ENTRY)只包含两个指针。如何获取这样一个块的大小(以WinDBG为单位),以及该大小存储在内存中的什么位置 0:008> dt _HEAP 0x00150000 ntdll!_HEAP ... +0x050 VirtualAllocdBlocks : _LIST_ENTRY [ 0x3e40000 - 0x13950000

我想知道windows如何跟踪“VirtualAllocdBlocks”的大小。根据WinDBG,内存块在双链接列表中管理。但是这个结构(_LIST_ENTRY)只包含两个指针。如何获取这样一个块的大小(以WinDBG为单位),以及该大小存储在内存中的什么位置

0:008> dt _HEAP 0x00150000 
ntdll!_HEAP
   ...
   +0x050 VirtualAllocdBlocks : _LIST_ENTRY [ 0x3e40000 - 0x13950000 ]
   ...
0:008> dt _LIST_ENTRY 0x3e40000 
ntdll!_LIST_ENTRY
 [ 0x3f50000 - 0x150050 ]
   +0x000 Flink            : 0x03f50000 _LIST_ENTRY [ 0x4050000 - 0x3e40000 ]
   +0x004 Blink            : 0x00150050 _LIST_ENTRY [ 0x3e40000 - 0x13950000 ]

我想你会发现这个列表包含了整个虚拟内存空间,大概是按顺序排列的,所以block
ptr
的大小是
ptr->Flink-ptr