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.

Vea también

Otros recursos

El montón de depuración de CRT