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.
Die C-Runtime -Bibliothek (CRT) enthält spezielle Debugversionen der Heap-Zuordnungsfunktionen. Diese Funktionen haben die gleichen Namen wie die Releaseversionen, _dbg
die an sie angefügt wurden. In diesem Artikel werden die Unterschiede zwischen der Releaseversion einer CRT-Funktion und der _dbg
Version unter Verwendung malloc
und _malloc_dbg
als Beispiele beschrieben.
Verhalten in Debugbuilds
Wenn _DEBUG
sie definiert ist, ordnet das CRT alle malloc
Aufrufe zu _malloc_dbg
. Daher müssen Sie ihren Code _malloc_dbg
nicht neu schreiben, anstatt malloc
die Vorteile beim Debuggen zu erhalten.
Unter Umständen möchten Sie _malloc_dbg
jedoch explizit aufrufen. Der explizite Aufruf von _malloc_dbg
bietet zusätzliche Vorteile:
Nachverfolgen von
_CLIENT_BLOCK
-Reservierungen.Speichern von Quelldatei und Zeilennummer an der Stelle, an der die Reservierung angefordert wurde.
Wenn Sie Ihre malloc
Aufrufe _malloc_dbg
nicht konvertieren möchten, können Sie die Quelldateiinformationen abrufen, indem Sie definieren _CRTDBG_MAP_ALLOC
, was bewirkt, dass der Präprozessor alle Aufrufe malloc
_malloc_dbg
direkt zuzuordnen, anstatt sich auf einen Wrapper zu malloc
verlassen.
Um Reservierungstypen in Clientblöcken gesondert nachzuverfolgen, muss _malloc_dbg
direkt aufgerufen und der blockType
-Parameter auf _CLIENT_BLOCK
festgelegt werden.
Verhalten in Nicht-Debug-Builds
Wenn _DEBUG
sie nicht definiert ist, werden Aufrufe malloc
nicht gestört, aufrufe _malloc_dbg
werden aufgelöst malloc
, die Definition wird _CRTDBG_MAP_ALLOC
ignoriert, und Quelldateiinformationen, die sich auf die Zuordnungsanforderung beziehen, werden nicht bereitgestellt. Da malloc
kein Blocktypparameter vorhanden ist, werden Anforderungen für _CLIENT_BLOCK
Typen als Standardzuordnungen behandelt.