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