Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel
Ordnet ein Array neu zu und initialisiert seine Elemente auf 0 (nur Debugversion).
void *_recalloc_dbg(
void *userData,
size_t num,
size_t size,
int blockType,
const char *filename,
int linenumber
);
userData
Zeiger zum vorherigen belegten Speicherblock.
number
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" im Debug-Heap.
filename
Zeiger zum Namen der Quelldatei, der die Zuordnung angefordert hat, oder NULL
.
linenumber
Zeilennummer in der Quelldatei, in der die Zuordnung angefordert wurde, oder NULL
.
Die filename
Parameter sind linenumber
nur verfügbar, wenn _recalloc_dbg
explizit aufgerufen oder die _CRTDBG_MAP_ALLOC
Präprozessorkonstante definiert wurde.
Nach erfolgreichem Abschluss gibt diese Funktion entweder einen Zeiger auf den Benutzerteil des neu 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 _recalloc
Funktion.
_recalloc_dbg
ist eine Debugversion der _recalloc
Funktion. Wenn _DEBUG
sie nicht definiert ist, wird jeder Anruf _recalloc_dbg
auf einen Anruf reduziert _recalloc
. Sowohl _recalloc
als auch _recalloc_dbg
belegen einen Speicherblock im Basisheap neu, jedoch verfügt _recalloc_dbg
über mehrere Debugfunktionen: Puffer auf beiden Seiten des Benutzerteils des Blocks zum Prüfen auf Speicherverluste, einen Blocktypparameter zum Nachverfolgen bestimmter Belegungstypen und filename
/linenumber
-Informationen zum Ermitteln des Ursprungs von Belegungsanforderungen.
_recalloc_dbg
ordnet den angegebenen Speicherblock mit etwas mehr Speicherplatz als die erforderliche Größe (number
* size
) neu zu, der größer oder kleiner als die Größe des ursprünglich zugeordneten Speicherblocks sein kann. 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. Die Neuzuordnung kann dazu führen, dass der ursprüngliche Speicherblock an eine andere Position im Heap verschoben und die Größe des Speicherblocks geändert wird. 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 ENOMEM
fest, wenn eine Speicherbelegung fehlschlägt. EINVAL
wird zurückgegeben, wenn 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_errlist
und _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 Unterschieden zwischen Standard heap-Funktionen und Debugversionen finden Sie unter Debugversionen von Heap-Zuordnungsfunktionen.
Routine | Erforderlicher Header |
---|---|
_recalloc_dbg |
<crtdbg.h> |
Weitere Informationen zur Kompatibilität finden Sie unter Kompatibilität.
Nur Debugversionen von C-Laufzeitbibliotheken