Compartir a través de


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

Este tema se aplica a:

Edición

Visual Basic

C#

F#

C++

Web Developer

Express

El tema no es aplicable El tema no es aplicable El tema no es aplicable

Sólo para código nativo

El tema no es aplicable

Pro, Premium y Ultimate

El tema no es aplicable El tema no es aplicable El tema no es aplicable

Sólo para código nativo

El tema no es aplicable

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