_recalloc_dbg

Ordnet ein Array neu zu und initialisiert seine Elemente auf 0 (nur Debugversion).

Syntax

void *_recalloc_dbg(
   void *userData,
   size_t num,
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parameter

Userdata
Zeiger zum vorherigen belegten Speicherblock.

Zahl
Angeforderte Anzahl von Speicherblöcken.

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

blockType
Angeforderter Typ des Speicherblocks: _CLIENT_BLOCK oder _NORMAL_BLOCK.

Informationen zu den Zuordnungsblocktypen und deren Verwendung finden Sie unter Typen von Blöcken auf dem Debugheap.

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

Linenumber
Zeilennummer in der Quelldatei, in der der Zuordnungsvorgang angefordert wurde, oder NULL.

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

Rückgabewert

Nach erfolgreichem Abschluss gibt diese Funktion entweder einen Zeiger auf den Benutzerteil des neu zugeordneten 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 _recalloc-Funktion.

Bemerkungen

_recalloc_dbg ist eine Debugversion der _recalloc-Funktion . Wenn _DEBUG nicht definiert ist, wird jeder Aufruf von _recalloc_dbg auf einen Aufruf von _recalloc reduziert. Sowohl _recalloc als auch _recalloc_dbg einen Speicherblock im Basisheap neu zugeben, aber _recalloc_dbg bietet mehrere Debugfunktionen: Puffer auf beiden Seiten des Benutzerteils des Blocks, um auf Lecks zu testen, einen Blocktypparameter zum Nachverfolgen bestimmter Zuordnungstypen und Informationen zur Dateinamelinenummer/, um den Ursprung von Zuordnungsanforderungen zu bestimmen.

_recalloc_dbg weist den angegebenen Speicherblock mit etwas mehr Speicherplatz neu zu als die angeforderte Größe (Numbersize * ), die größer oder kleiner als die Größe des ursprünglich zugeordneten Speicherblocks sein kann. 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. Der Benutzerteil des Blocks wird mit dem Wert 0xCD gefüllt, und jeder der Überschreibungspuffer wird mit 0xFD gefüllt.

_recalloc_dbg legt errno auf ENOMAM fest, wenn bei einer Speicherbelegung ein Fehler auftritt. EINVAL wird zurückgegeben, wenn der benötigte Arbeitsspeicher (einschließlich des oben erwähnten Mehraufwands) _HEAP_MAXREQ überschreitet. Informationen hierzu und über andere 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 CRT Debugheapdetails. Weitere Informationen zu den Unterschieden zwischen dem Aufruf einer Standardheapfunktion und der Debugversion in einem Debugbuild finden Sie unter Debugversionen von Heapreservierungsfunktionen.

Anforderungen

-Routine zurückgegebener Wert Erforderlicher Header
_recalloc_dbg <crtdbg.h>

Weitere Informationen zur Kompatibilität finden Sie unter Compatibility.

Bibliotheken

Nur Debugversionen der C-Laufzeitbibliotheken.

Siehe auch

Debugroutinen