¿Le resultó útil esta página?
Sus comentarios sobre este contenido son muy importantes. Háganos saber su opinión.
¿Tiene comentarios adicionales?
Caracteres restantes: 1500
Versiones de depuración de las funciones de asignación del montón

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

Este tema es aplicable a:

Edición de Visual Studio

Visual Basic

C#

C++

J#

Express

No

No

Código nativo

No

Standard

No

No

Código nativo

No

Pro/Team

No

No

Código nativo

No

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, utilizando malloc y _malloc_dbg como ejemplos.

Cuando _DEBUG está definido, CRT convierte todas las llamadas a malloc en llamadas 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 a 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 a malloc en llamadas a _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 _DEBUG no está definido, 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 la información de archivos de código fuente correspondiente a la solicitud de asignación no se facilita. 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

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft