_malloc_dbg

Belegt einen Speicherblock im Heap mit zusätzlichem Speicher für einen Header des Debuggens und überschreibt Puffer (nur in der Debugversion).

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

Parameter

  • size
    Die angeforderte Größe des Speicherblocks (in Byte).

  • blockType
    Angeforderter Typ des Speicherblocks: _CLIENT_BLOCK oder _NORMAL_BLOCK.

  • filename
    Ein Zeiger auf den Namen der Quelldatei, die den angeforderten Vorgang Zuordnung oder NULL.

  • linenumber
    Zeilennummer in der Quelldatei, in der der angeforderte Vorgang für Zuordnungen oder NULL war.

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

Rückgabewert

Bei erfolgreichem Abschluss gibt diese Funktion einen Zeiger auf den Benutzern des belegten Speicherblocks zurück, ruft die neue Handlerfunktion veranschaulicht, oder gibt NULL zurück.Eine vollständige Beschreibung des Verhaltens zurückgeben, finden Sie im folgenden Abschnitt " Hinweise ".Weitere Informationen darüber, wie die neue Handlerfunktion verwendet wird, finden Sie unter der malloc-Funktion.

Hinweise

_malloc_dbg ist eine Debugversion der malloc-Funktion.Wenn _DEBUG nicht definiert ist, wird jeder Aufruf von _malloc_dbg zu einem Aufruf von mallocreduziert.malloc anordnen und _malloc_dbg einen Speicherblock im Basisheap auf, aber _malloc_dbg bietet mehrere Debugfeatures an: Puffer auf beiden Seiten des Benutzers zu einem Teil des Verlusten Parameter Blockformat, um bestimmte Typen von Zuordnungen zu verfolgen und filename/linenumber Informationen zu testen, Blocks um den Ursprung Zuordnung von Anforderungen zu bestimmen.

_malloc_dbg ordnet den Speicherblock mit etwas mehr Platz als angeforderte size.Das zusätzliche Speicherplatz wird vom Debugheap Manager, um die Programmdebuginformationen Speicherblöcke zu verknüpfen und die Anwendung bereitzustellen und Debuggen mit Headerinformationen Puffer zu überschreiben.Wenn der Block zugeordnet ist, wird der Benutzer des Blocks mit dem Wert 0xCD gefüllt und jeder der überschreibens Puffer werden mit 0xFD gefüllt.

_malloc_dbg legt diesen fest ENOMEM zu errno , wenn eine Speicherbelegung fehlschlägt, oder wenn der Arbeitsspeicher benötigt wird (einschließlich Mehraufwand bereits erwähnt) _HEAP_MAXREQüberschreitet.Weitere Informationen zu diesem und anderen Fehlercodes finden Sie unter errno, _doserrno, _sys_errlist und _sys_nerr.

Weitere Informationen zum Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter Speicherverwaltung und Debugheap.

Weitere Informationen zu den Typen von Zuordnungen blocks und wie diese verwendet werden, finden Sie unter Blocktypen auf dem Debugheap.

Anforderungen

Routine

Erforderlicher Header

_malloc_dbg

<crtdbg.h>

Weitere Informationen finden Sie unter Kompatibilität Kompatibilität in der Einführung.

Bibliotheken

Debugversionen von nur C .

Beispiel

Ein Beispiel dafür, wie _malloc_dbgfinden Sie unter crt_dbg1verwendet.

.NET Framework-Entsprechung

Nicht zutreffend. Um die Standard-C-Funktion aufrufen, verwenden Sie PInvoke. Weitere Informationen finden Sie unter Plattformaufruf-Beispiele.

Siehe auch

Referenz

Debug- Routinen

malloc

_calloc_dbg

_calloc_dbg