Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse 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.