Versiones de depuración de las funciones de asignación del montón

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 forma predeterminada.

La biblioteca en tiempo de ejecución de C contiene versiones de depuración especiales de las funciones de asignación de memoria en el montón. Estas funciones tienen los mismos nombres que las versiones de lanzamiento pero con _dbg agregado al final. Este tema describe las diferencias entre la versión de lanzamiento de una función CRT y la versión _dbg usando malloc y _malloc_dbg como ejemplos.

Cuando se define _DEBUG, CRT asigna todas las llamadas de malloc a _malloc_dbg. Por lo tanto, no es necesario volver a escribir el código utilizando _malloc_dbg en vez de malloc para aprovechar sus beneficios mientras se depura.

No obstante, se puede llamar a _malloc_dbg explícitamente. Llamar explícitamente a _malloc_dbg presenta algunas ventajas adicionales:

  • Seguimiento de asignaciones de tipos _CLIENT_BLOCK.

  • Almacenamiento del archivo de código fuente y número de línea donde se produjo la solicitud de asignación de memoria.

Si no desea convertir las llamadas de malloc en llamadas a _malloc_dbg, puede obtener la información de archivos de código fuente definiendo _CRTDBG_MAP_ALLOC, que hace que el preprocesador asigne directamente todas las llamadas de malloc a llamadas de _malloc_dbg, en vez de utilizar un contenedor que envuelva a malloc.

Para realizar un seguimiento de los tipos de asignaciones que existen en los bloques cliente de forma independiente, se debe llamar directamente a _malloc_dbg y asignar a _CLIENT_BLOCK el parámetro blockType.

Cuando no está definido _DEBUG, las llamadas a malloc no se modifican, las llamadas a _malloc_dbg se resuelven como malloc, la definición de _CRTDBG_MAP_ALLOC se omite y no se facilita la información de los archivos de código fuente correspondiente a la solicitud de asignación. Como malloc no utiliza un parámetro de tipo bloque, las solicitudes para tipos _CLIENT_BLOCK se tratan como asignaciones estándar.

Vea también

Otros recursos

Técnicas de depuración de CRT