gpt4 book ai didi

heap-memory - !heap -x -v 和 !heap -flt s 之间的矛盾

转载 作者:行者123 更新时间:2023-12-04 18:06:16 26 4
gpt4 key购买 nike

我正在分析一个显示一些奇怪的转储:命令 !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相关的摘录)

    所以我得出结论,似乎存在矛盾。

    我在做/假设有什么问题吗?我该怎么做才能理解出了什么问题?

    最佳答案

    您忽略了 8 个未使用的字节,请尝试

    !heap -flt s 90

    从我的测试程序:
    0:000> !heap -x -v 0x003dc710 
    Entry User Heap Segment Size PrevSize Unused Flags
    -----------------------------------------------------------------------------
    003dc708 003dc710 003d0000 003d0000 1310 40 d busy

    0:000> ? 1310-d
    Evaluate expression: 4867 = 00001303

    0:000> !heap -flt s 1303
    _HEAP @ 3d0000
    HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
    003dc708 0262 0000 [00] 003dc710 01303 - (busy)

    此处分配的更多详细信息:
    0:000> !heap -i 3d0000
    Heap context set to the heap 0x003d0000
    0:000> !heap -i 003dc708
    Detailed information for block entry 003dc708
    Assumed heap : 0x003d0000 (Use !heap -i NewHeapHandle to change)
    Header content : 0x6334FAFC 0x0D00FD4A (decoded : 0x61010262 0x0D000008)
    Owning segment : 0x003d0000 (offset 0)
    Block flags : 0x1 (busy )
    Total block size : 0x262 units (0x1310 bytes)
    Requested size : 0x1303 bytes (unused 0xd bytes)
    Previous block size: 0x8 units (0x40 bytes)
    Block CRC : OK - 0x61
    Previous block : 0x003dc6c8
    Next block : 0x003dda18

    关于heap-memory - !heap -x -v 和 !heap -flt s 之间的矛盾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911288/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com