Freigeben über


_malloc_dbg

Weist einen Speicherblock im Heap mit zusätzlichem Speicherplatz für einen Debugheader zu und überschreibt Puffer (nur Debugversion).

Syntax

void *_malloc_dbg(
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parameter

size
Angeforderte Größe des Speicherblocks (Bytes).

blockType
Angeforderter Typ des Speicherblocks: _CLIENT_BLOCK oder _NORMAL_BLOCK.

filename
Zeiger auf den Namen der Quelldatei, die die Belegung angefordert hat, oder NULL.

linenumber
Zeilennummer in der Quelldatei, in der die Belegung angefordert wurde, oder NULL.

Die filename Parameter sind linenumber nur verfügbar, wenn _malloc_dbg explizit aufgerufen oder die _CRTDBG_MAP_ALLOC Präprozessorkonstante definiert wurde.

Rückgabewert

Nach erfolgreichem Abschluss gibt diese Funktion einen Zeiger auf den Benutzerteil des zugewiesenen Speicherblocks zurück, ruft die neue Handlerfunktion auf oder gibt zurück NULL. Eine vollständige Beschreibung des Rückgabeverhaltens finden Sie im folgenden Abschnitt "Hinweise". Weitere Informationen zur Verwendung der neuen Handlerfunktion finden Sie in der malloc Funktion.

Hinweise

_malloc_dbg ist eine Debugversion der malloc Funktion. Wenn _DEBUG sie nicht definiert ist, wird jeder Anruf _malloc_dbg auf einen Anruf reduziert malloc. Sowohl malloc als auch _malloc_dbg belegen einen Speicherblock im Basisheap, jedoch bietet _malloc_dbg mehrere Debugfunktionen: Puffer auf beiden Seiten des Benutzerteils des Blocks zum Prüfen auf Speicherverluste, einen Blocktypparameter zum Nachverfolgen von bestimmten Belegungstypen und filename/linenumber-Informationen zum Ermitteln des Ursprungs von Belegungsanforderungen.

_malloc_dbg belegt den Speicherblock mit etwas mehr Speicherplatz als der angeforderten size. Der zusätzliche Speicherplatz wird vom Debug-Heap-Manager verwendet, um die Debugspeicherblöcke zu verknüpfen und der Anwendung Debugheaderinformationen und Überschreiben von Puffern bereitzustellen. Wenn der Block zugewiesen wird, wird der Benutzerteil des Blocks mit dem Wert 0xCD gefüllt, und jeder der Überschreibpuffer wird mit 0xFD gefüllt.

_malloc_dbg legt errno auf ENOMEM fest, wenn eine Speicherbelegung fehlschlägt oder der benötigte Speicherplatz (einschließlich des bereits erwähnten Mehraufwands) _HEAP_MAXREQ überschreitet. Informationen zu diesem und anderen Fehlercodes finden Sie unter , , _doserrno, _sys_errlistund _sys_nerr.errno

Informationen dazu, wie Speicherblöcke in der Debugversion des Basis heap zugeordnet, initialisiert und verwaltet werden, finden Sie unter CRT Debug Heap Details. Informationen zu den Zuordnungsblocktypen und deren Verwendung finden Sie unter "Typen von Blöcken" im Debug-Heap. Informationen zu den Unterschieden zwischen Standard heap-Funktionen und Debugversionen finden Sie unter Debugversionen von Heap-Zuordnungsfunktionen.

Anforderungen

Routine Erforderlicher Header
_malloc_dbg <crtdbg.h>

Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.

Libraries

Nur Debugversionen von C-Laufzeitbibliotheken

Beispiel

Ein Beispiel für die Verwendung _malloc_dbgfinden Sie unter crt_dbg1.

Siehe auch

Debugroutinen
malloc
_calloc_dbg