我正在分析一个显示奇怪内容的转储:命令!heap -x -v hexadecimal_address
和命令之间似乎存在矛盾!heap -flt s size_of_block
我正在询问悬挂的指针.在这个转储中,这个悬空指针碰巧是:0x0bdd00c0
要检索有关我使用!heap -x -v 0bdd00c0
哪个返回的堆内存块的信息
Entry User Heap Segment Size PrevSize Unused Flags ----------------------------------------------------------------------------- 0bdd00b8 0bdd00c0 003b0000 0bc00000 98 20 8 busy
这表明在这种情况下:
内存块处于busy
模式(大部分时间在我的其他转储中,内存在这里是免费的)
内存块是0x98
字节大
内存块在堆内部进行管理003b0000
.
让我困惑的是:
当我启动时!heap -flt s 98
(只想观察其他具有相同大小的对象)我得到的结果不会显示我调查的指针0bdd00c0
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state _HEAP @ 3b0000 14b24fa8 0014 0014 [01] 14b24fb0 00098 - (busy) 0bc645a8 0014 0014 [01] 0bc645b0 00098 - (busy) 0bc66398 0014 0014 [01] 0bc663a0 00098 - (busy) 0bcbedf8 0014 0014 [01] 0bcbee00 00098 - (busy) 0bce2cc8 0014 0014 [01] 0bce2cd0 00098 - (busy) 0bceff88 0014 0014 [00] 0bceff90 00098 - (free) 0bdf2f78 0014 0014 [01] 0bdf2f80 00098 - (busy) 0be28c50 0014 0014 [01] 0be28c58 00098 - (busy) 0be57470 0014 0014 [00] 0be57478 00098 - (free) 0beed050 0014 0014 [01] 0beed058 00098 - (busy) 0bf1aaf0 0014 0014 [00] 0bf1aaf8 00098 - (free) 0bf214c0 0014 0014 [00] 0bf214c8 00098 - (free) 0bf99bf0 0014 0014 [00] 0bf99bf8 00098 - (free)
(我只给你了一堆3b0000相关摘录)
所以我得出的结论是,似乎存在矛盾.
我在做/假设有什么不对吗?我该怎么做才能理解什么是错的?