Frage

Ich sehe Ausgabe wie diese in meiner DMP-Datei:

Heap entries for Segment00 in Heap 00150000
    00150640: 00640 . 00040 [01] - busy (40)
    00150680: 00040 . 01808 [01] - busy (1800)
    00151e88: 01808 . 00210 [01] - busy (208)
    00152098: 00210 . 00228 [00]
    001522c0: 00228 . 00030 [01] - busy (22)
    001522f0: 00030 . 00018 [01] - busy (10)
    00152308: 00018 . 00048 [01] - busy (3c)

Die WinDbg docs sagen diese:

    Heap entries for Segment00 in Heap 250000
                        0x01 - HEAP_ENTRY_BUSY            
                        0x02 - HEAP_ENTRY_EXTRA_PRESENT   
                        0x04 - HEAP_ENTRY_FILL_PATTERN    
                        0x08 - HEAP_ENTRY_VIRTUAL_ALLOC   
                        0x10 - HEAP_ENTRY_LAST_ENTRY      
                        0x20 - HEAP_ENTRY_SETTABLE_FLAG1  
                        0x40 - HEAP_ENTRY_SETTABLE_FLAG2  
Entry     Prev    Cur   0x80 - HEAP_ENTRY_SETTABLE_FLAG3  

Address   Size    Size  flags       (Bytes used)    (Tag name)
00250000: 00000 . 00b90 [01] - busy (b90)
00250b90: 00b90 . 00038 [01] - busy (38) 
00250bc8: 00038 . 00040 [07] - busy (24), tail fill (NTDLL!LDR Database)

Der Abstand ist aber in der Dokumentation seltsam. Heißt die ‚Entry-Adresse‘ und ‚zurück Größe‘ und ‚Köter Größe‘ oder sind der ‚Eintrag‘ ‚zurück‘ und ‚Aktuell‘ nicht für die Linie unten?

Was bedeutet ‚zurück Größe‘ und ‚Köter Größe‘ bedeuten? Insbesondere im Hinblick auf ‚verwendeten Bytes‘. Was ist der Unterschied zwischen ‚Bytes verwendet‘ und ‚Köter Größe‘?

War es hilfreich?

Lösung

Ein Heap-Segment ist ein kontinuierlicher Speicherblock für einen gegebenen Haufen. Es ist auch eine Kette von Heap-Einträgen.

eine Liste von Heap-Einträgen gehen leiten wir die Cur Größe als Offset verwenden können, um den nächsten Haufen Eintrag zu erhalten.

eine Liste von Heap-Einträgen, um rückwärts gehen können wir die vorherige Größe verwenden als zu Beginn des vorigen Eintrags Offset zu erhalten.

Hier (Bild unten) können Sie die psize (iV Größe) und seine Beziehung zu der Größe (aktuellen Größe) für den Eintrag sehen, kurz bevor es.

Das Bytes verwendet wird, indem die Größe von der der Anzahl des nicht verwendeten Bytes am Ende dieser Blöcke berechnet, die nicht tatsächlich zugewiesen wurde. Auf diese Weise können Sie die Größe der Zuordnung bestimmen, die vor dem Runden die gewünschte Größe für die Zuweisung Granularität angefordert wurde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top