Freigeben über


_realloc_dbg

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

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

Parameter

  • userData
    Ein Zeiger auf das zuvor belegten Speicherblock.

  • newSize
    Die angeforderte Größe für den neu zugeteilten Block (Bytes).

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

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

  • linenumber
    Zeilennummer in der Quelldatei, in der der angeforderte Vorgang realloc oder NULL war.

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

Rückgabewert

Bei erfolgreichem Abschluss gibt diese Funktion entweder einen Zeiger auf den neu des Benutzers zugeteilten 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 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 reallocreduziert.realloc teilen und _realloc_dbg Basisheap einen Speicherblock im neu zu _realloc_dbg bringt jedoch einige Debugfunktionen unter: 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.

_realloc_dbg weist den angegebenen Speicherblock mit etwas mehr Platz als angeforderte newSizeneu.newSize ist möglicherweise größer oder kleiner als die Größe des ursprünglich belegten Speicherblocks.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.Die ergäbe Neuzuordnung kann das Verschieben des ursprünglichen Speicherblocks an einen anderen Speicherort im Heap als auch beim Ändern der Größe des Speicherblocks.Wenn der Speicherblock verschoben wird, wird der Inhalt des ursprünglichen Blocks überschrieben.

_realloc_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.Weitere Informationen über die Unterschiede zwischen den Aufrufen einer Funktion und ihrer heap Standard in einem Debugbuild Debugversion einer Anwendung finden Sie unter Verwenden der Debugversion für die Grundversion.

Anforderungen

Routine

Erforderlicher Header

_realloc_dbg

<crtdbg.h>

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

Bibliotheken

Debugversionen von nur C .

Beispiel

Weitere Informationen finden Sie im Beispiel in _msize_dbg Thema.

.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_dbg