【问题标题】:contradiction between !heap -x -v and !heap -flt s!heap -x -v 和 !heap -flt s 之间的矛盾
【发布时间】:2015-01-10 17:46:17
【问题描述】:
我正在分析显示一些奇怪的转储:命令 !heap -x -v hexadecimal_address 和 !heap -flt s size_of_block 之间似乎存在矛盾
我正在询问悬空指针。
在这个转储中,这个悬空指针恰好是:0x0bdd00c0
要检索有关堆内存块的信息,我使用返回的 !heap -x -v 0bdd00c0
条目用户堆段大小 PrevSize 未使用标志
-------------------------------------------------- --------------------------
0bdd00b8 0bdd00c0 003b0000 0bc00000 98 20 8 忙
这表明在这种情况下:
- 内存块处于
busy 模式(大部分时间在我的其他转储中,内存在这里是空闲的)
- 内存块是
0x98 字节大
- 内存块在堆内管理
003b0000。
让我困惑的是:
当我启动 !heap -flt s 98 时(只是想观察其他具有相同大小的对象)
我得到这个结果 不显示我调查的指针 0bdd00c0
HEAP_ENTRY 大小 Prev 标志 UserPtr UserSize - 状态
_HEAP @ 3b0000
14b24fa8 0014 0014 [01] 14b24fb0 00098 - (忙)
0bc645a8 0014 0014 [01] 0bc645b0 00098 - (忙)
0bc66398 0014 0014 [01] 0bc663a0 00098 - (忙)
0bcbedf8 0014 0014 [01] 0bcbee00 00098 -(忙)
0bce2cc8 0014 0014 [01] 0bce2cd0 00098 -(忙)
0bceff88 0014 0014 [00] 0bceff90 00098 -(免费)
0bdf2f78 0014 0014 [01] 0bdf2f80 00098 -(忙)
0be28c50 0014 0014 [01] 0be28c58 00098 - (忙)
0be57470 0014 0014 [00] 0be57478 00098 -(免费)
0beed050 0014 0014 [01] 0beed058 00098 - (忙)
0bf1aaf0 0014 0014 [00] 0bf1aaf8 00098 -(免费)
0bf214c0 0014 0014 [00] 0bf214c8 00098 -(免费)
0bf99bf0 0014 0014 [00] 0bf99bf8 00098 -(免费)
(我只给了你heap 3b0000相关的摘录)
所以我得出结论,似乎存在矛盾。
我在做/假设有什么问题吗?我该怎么做才能了解问题所在?
【问题讨论】:
标签:
heap-memory
windbg