mi-malloc 1.8/2.1
 
Lade...
Suche...
Keine Treffer
Heap-Inspektion

Den Heap zur Laufzeit inspizieren. Mehr...

Datenstrukturen

struct  mi_heap_area_t
 Ein Bereich des Heap-Speichers enthält Blöcke einer einzelnen Größe. Mehr...
 

Typedefs

typedef bool mi_block_visit_fun(const mi_heap_t *heap, const mi_heap_area_t *area, void *block, size_t block_size, void *arg)
 Besucherfunktion, die an mi_heap_visit_blocks() übergeben wird
 

Funktionen

bool mi_heap_contains_block (mi_heap_t *heap, const void *p)
 Enthält ein Heap einen Zeiger auf einen zuvor zugewiesenen Block?
 
bool mi_heap_check_owned (mi_heap_t *heap, const void *p)
 Prüft sicher, ob ein Zeiger Teil eines Heaps ist.
 
bool mi_check_owned (const void *p)
 Prüft sicher, ob ein Zeiger Teil des Standard-Heaps dieses Threads ist.
 
bool mi_heap_visit_blocks (const mi_heap_t *heap, bool visit_all_blocks, mi_block_visit_fun *visitor, void *arg)
 Besucht alle Bereiche und Blöcke in einem Heap.
 
bool mi_abandoned_visit_blocks (mi_subproc_id_t subproc_id, int heap_tag, bool visit_blocks, mi_block_visit_fun *visitor, void *arg)
 Besucht alle Bereiche und Blöcke in verlassenen Heaps.
 

Detaillierte Beschreibung

Den Heap zur Laufzeit inspizieren.


Dokumentation der Datenstrukturen

◆ mi_heap_area_t

struct mi_heap_area_t

Ein Bereich des Heap-Speichers enthält Blöcke einer einzelnen Größe.

Die Bytes in freigegebenen Blöcken sind committed - used.

Datenfelder
size_t block_size Größe eines Blocks in Bytes
void * blocks Start des Bereichs, der Heap-Blöcke enthält
size_t committed Derzeit zugesicherte Bytes dieses Bereichs
size_t full_block_size Größe eines vollständigen Blocks in Bytes inklusive Padding und Metadaten.
int heap_tag Heap-Tag, der diesem Bereich zugeordnet ist (siehe mi_heap_new_ex)
size_t reserved Für diesen Bereich reservierte Bytes
size_t used Bytes, die von zugewiesenen Blöcken verwendet werden

Typedef-Dokumentation

◆ mi_block_visit_fun

typedef bool mi_block_visit_fun(const mi_heap_t *heap, const mi_heap_area_t *area, void *block, size_t block_size, void *arg)

Besucherfunktion, die an mi_heap_visit_blocks() übergeben wird

Rückgabe
true wenn OK, false zum Stoppen des Besuchs (d.h. Abbruch)

Diese Funktion wird immer zuerst für jeden Bereich mit block als NULL Zeiger aufgerufen. Wenn visit_all_blocks true war, wird die Funktion anschließend für jeden zugewiesenen Block in diesem Bereich aufgerufen.

Funktionsdokumentation

◆ mi_abandoned_visit_blocks()

bool mi_abandoned_visit_blocks ( mi_subproc_id_t subproc_id,
int heap_tag,
bool visit_blocks,
mi_block_visit_fun * visitor,
void * arg )

Besucht alle Bereiche und Blöcke in verlassenen Heaps.

Parameter
subproc_idDie Unterprozess-ID, die mit den verlassenen Heaps verbunden ist.
heap_tagBesucht nur verlassene Speicherbereiche mit dem angegebenen Heap-Tag, verwenden Sie -1, um alle verlassenen Speicherbereiche zu besuchen.
visit_blocksWenn true, werden alle zugewiesenen Blöcke besucht, andernfalls wird visitor nur für jeden Heap-Bereich aufgerufen.
visitorDiese Funktion wird für jeden Bereich im Heap aufgerufen (mit block als NULL). Wenn visit_all_blocks true ist, wird visitor auch für jeden zugewiesenen Block in jedem Bereich aufgerufen (mit block!=NULL). Geben Sie false aus dieser Funktion zurück, um den Besuch vorzeitig zu beenden.
argZusätzliches Argument, das an den visitor übergeben wird.
Rückgabe
true, wenn alle Bereiche und Blöcke besucht wurden.

Hinweis: Erfordert, dass die Option mi_option_visit_abandoned zu Beginn des Programms gesetzt ist.

◆ mi_check_owned()

bool mi_check_owned ( const void * p)

Prüft sicher, ob ein Zeiger Teil des Standard-Heaps dieses Threads ist.

Parameter
pBeliebiger Zeiger – muss nicht zuvor von uns zugewiesen worden sein.
Rückgabe
true, wenn p auf einen Block im Standard-Heap dieses Threads zeigt.

Hinweis: Teure Funktion, linear in den Seiten des Heaps.

Siehe auch
mi_heap_contains_block()
mi_heap_get_default()

◆ mi_heap_check_owned()

bool mi_heap_check_owned ( mi_heap_t * heap,
const void * p )

Prüft sicher, ob ein Zeiger Teil eines Heaps ist.

Parameter
heapDer Heap.
pBeliebiger Zeiger – muss nicht zuvor von uns zugewiesen worden sein.
Rückgabe
true, wenn p auf einen Block im heap zeigt.

Hinweis: Teure Funktion, linear in den Seiten des Heaps.

Siehe auch
mi_heap_contains_block()
mi_heap_get_default()

◆ mi_heap_contains_block()

bool mi_heap_contains_block ( mi_heap_t * heap,
const void * p )

Enthält ein Heap einen Zeiger auf einen zuvor zugewiesenen Block?

Parameter
heapDer Heap.
pZeiger auf einen zuvor zugewiesenen Block (in einem beliebigen Heap) – darf kein beliebiger Zeiger sein!
Rückgabe
true, wenn der von p referenzierte Block im heap liegt.
Siehe auch
mi_heap_check_owned()

◆ mi_heap_visit_blocks()

bool mi_heap_visit_blocks ( const mi_heap_t * heap,
bool visit_all_blocks,
mi_block_visit_fun * visitor,
void * arg )

Besucht alle Bereiche und Blöcke in einem Heap.

Parameter
heapDer zu besuchende Heap.
visit_all_blocksWenn true, werden alle zugewiesenen Blöcke besucht, andernfalls wird visitor nur für jeden Heap-Bereich aufgerufen.
visitorDiese Funktion wird für jeden Bereich im Heap aufgerufen (mit block als NULL). Wenn visit_all_blocks true ist, wird visitor auch für jeden zugewiesenen Block in jedem Bereich aufgerufen (mit block!=NULL). Geben Sie false aus dieser Funktion zurück, um den Besuch vorzeitig zu beenden.
argZusätzliches Argument, das an den visitor übergeben wird.
Rückgabe
true, wenn alle Bereiche und Blöcke besucht wurden.