Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La biblioteca de tiempo de ejecución de C (CRT) contiene versiones especiales de depuración de las funciones de asignación del montón. Estas funciones tienen los mismos nombres que las versiones release con _dbg anexadas. En este artículo se describen las diferencias entre la versión release de una función de CRT y la _dbg versión, utilizando malloc y _malloc_dbg como ejemplos.
Comportamiento en compilaciones de depuración
Cuando _DEBUG se define, el CRT asigna todas las malloc llamadas a _malloc_dbg. Por lo tanto, no es necesario volver a escribir el código mediante _malloc_dbg en lugar de malloc recibir las ventajas durante la depuración.
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 malloc llamadas a _malloc_dbg, puede obtener la información del archivo de origen definiendo _CRTDBG_MAP_ALLOC, lo que hace que el preprocesador asigne directamente todas las llamadas a malloc _malloc_dbg en lugar de confiar en un contenedor alrededor mallocde .
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 blockType el parámetro _CLIENT_BLOCK.
Comportamiento en compilaciones que no son de depuración
Cuando _DEBUG no se define, las llamadas a malloc no se molestan, las llamadas a se resuelven mallocen _malloc_dbg , la definición de se omite y no se proporciona información de _CRTDBG_MAP_ALLOC archivo de origen relativa a la solicitud de asignación. Dado malloc que no tiene un parámetro de tipo de bloque, las solicitudes de _CLIENT_BLOCK tipos se tratan como asignaciones estándar.