Freigeben über


_recalloc_dbg

Belegt einen angegebenen Speicherblock im Heap durch Verschieben und/oder Ändern der Größe des Blocks erneut (nur Debugversion).

void *_realloc_dbg(
   void *userData,
   size_t newSize,
   int blockType,
   const char *filename,
   int linenumber 
);

Parameter

  • userData
    Zeiger zum vorherigen belegten Speicherblock.

  • newSize
    Angeforderte Größe für den neu belegten Block (Bytes).

  • blockType
    Angeforderter Typ für den neu zugeordneten Block: _CLIENT_BLOCK oder _NORMAL_BLOCK.

  • filename
    Zeiger zum Namen der Quelldatei, der den realloc-Vorgang angefordert hat, oder NULL.

  • linenumber
    Zeilennummer in der Quelldatei, in der der realloc-Vorgang angefordert wurde, oder NULL.

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

Rückgabewert

Bei erfolgreichem Abschluss gibt diese Funktion entweder einen Zeiger an den Benutzerteil des neu belegten Speicherblocks zurück, ruft die neue Handlerfunktion auf oder gibt NULL zurück. Eine vollständige Beschreibung des Rückgabeverhaltens finden Sie im folgenden Abschnitt "Hinweise". Weitere Informationen zur Verwendung der neuen Handlerfunktion finden Sie unter der realloc-Funktion.

Hinweise

_realloc_dbg ist eine Debugversion der realloc-Funktion. Wenn _DEBUG nicht definiert ist, wird jeder Aufruf von _realloc_dbg zu einem Aufruf von realloc reduziert. Sowohl realloc als auch _realloc_dbg belegen einen Speicherblock im Basisheap neu, jedoch verfügt _realloc_dbg über 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.

_realloc_dbg belegt den angegebenen Speicherblock neu mit etwas mehr Speicherplatz als der angeforderten newSize. newSize kann größer oder kleiner sein als die Größe des ursprünglich belegten Speicherblocks. Der zusätzliche Speicherplatz wird vom Debugheapmanager verwendet, um die Debugspeicherblöck zu verknüpfen und Debugheaderinformationen und Überschreibungspuffer für die Anwendung bereitzustellen. Durch die Neubelegung wird der ursprüngliche Speicherblock möglicherweise an einen anderen Speicherort im Heap verschoben und auch die Größe des Speicherblocks geändert. Wenn der Speicherblock verschoben wird, wird der Inhalt des ursprünglichen Blocks überschrieben.

_realloc_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 errno, _doserrno, _sys_errlist und _sys_nerr.

Informationen darüber, wie Speicherblöcke in der Debugversion des Basisheaps zugeordnet, initialisiert und verwaltet werden, finden Sie unter Details zum CRT-Debugheap. Weitere Informationen zu den Zuordnungsblocktypen und ihrer Verwendung finden Sie unter Blocktypen auf dem Debugheap. Weitere Informationen zu den Unterschieden zwischen dem Aufruf einer Standardheapfunktion und der Debugversion in einem Debugbuild einer Anwendung finden Sie unter Debugversionen von Heapreservierungsfunktionen.

Anforderungen

Routine

Erforderlicher Header

_realloc_dbg

<crtdbg.h>

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

Bibliotheken

Nur Debugversionen von C-Laufzeitbibliotheken.

Beispiel

Ein Beispiel finden Sie im Thema _msize_dbg.

.NET Framework-Entsprechung

Nicht zutreffend. Mit PInvoke rufen Sie die Standard-C-Funktion auf. Weitere Informationen finden Sie unter Beispiele für Plattformaufrufe.

Siehe auch

Referenz

Debugroutinen

_malloc_dbg