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_dbgnicht 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 mallocverlassen.
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.