2014-11-13 1 views
4

! 내가 매달려에 대해 문의하고있어 명령 !heap -x -v hexadecimal_address!heap -flt s size_of_block모순 힙 -x -v 및 힙 -FLT의 나는 이상한 뭔가를 보여줍니다 덤프를 분석하고 있습니다

사이 contradiciton 것 같다 포인터. 이 덤프에서 이 허상 포인터는 우연히 :

    : 0x0bdd00c0

    내가이 경우, 즉 그 표시

     Entry  User  Heap  Segment  Size PrevSize Unused Flags 
        ----------------------------------------------------------------------------- 
        0bdd00b8 0bdd00c0 003b0000 0bc00000  98  20   8 busy 
    

    를 반환 !heap -x -v 0bdd00c0 사용하는 힙 메모리 블록에 대한 정보를 검색하려면

  • 메모리 블록이 busy 모드입니다 (대개 다른 시간대의 다른 덤프 메모리는 여기에서 무료입니다)
  • 메모리 블록이입니다.바이트 큼
  • 메모리 블록은 힙 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 관련 발췌했다)

그래서 나는 모순이있는 것으로 결론에 도달했습니다.

내가 잘못하고 있다고 가정합니까? 무엇이 잘못되었는지 이해하기 위해 무엇을 할 수 있습니까? 당신은 8 사용되지 않는 바이트를 간과

답변

7

, 내 테스트 음식물에서 ​​

!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 
관련 문제