Utilizar el montón de depuración desde C++
Actualización: noviembre 2007
Este tema es aplicable a:
Edición |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Sólo para código nativo |
|||
Standard |
Sólo para código nativo |
|||
Pro y Team |
Sólo para código nativo |
Leyenda de la tabla:
Se aplica |
|
No procede |
|
Comando o comandos ocultos de manera predeterminada. |
En C++, puede llamar a la versión de depuración del operador new directamente o crear macros que reemplacen el operador new en modo de depuración, como se muestra en el siguiente ejemplo.
Reemplazar el nuevo operador
/* MyDbgNew.h
Defines global operator new to allocate from
client blocks
*/
#ifdef _DEBUG
#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)
#else
#define DEBUG_CLIENTBLOCK
#endif // _DEBUG
/* MyApp.cpp
Compile options needed: /Zi /D_DEBUG /MLd
* or use a
* Default Workspace for a Console Application to
* build a Debug version
*/
#include "crtdbg.h"
#include "mydbgnew.h"
#ifdef _DEBUG
#define new DEBUG_CLIENTBLOCK
#endif
int main( ) {
char *p1;
p1 = new char[40];
_CrtMemDumpAllObjectsSince( NULL );
}
La versión de depuración del operador delete funciona con todos los tipos de bloques y no requiere realizar cambios en el programa cuando se compila una versión de lanzamiento.