Compartir a través de


_malloc_dbg

Asigna un bloque de memoria en el montón con espacio adicional para un encabezado de depuración y sobrescribir búferes (solo versión de depuración).

Sintaxis

void *_malloc_dbg(
   size_t size,
   int blockType,
   const char *filename,
   int linenumber
);

Parámetros

size
Tamaño solicitado del bloque de memoria (en bytes).

blockType
Tipo de bloque de memoria solicitado: _CLIENT_BLOCK o _NORMAL_BLOCK.

filename
Puntero al nombre del archivo de código fuente que solicitó la operación de asignación o valor NULL.

linenumber
Número de línea del archivo de código fuente en la que se solicitó la operación de asignación o valor NULL.

Los filename parámetros y linenumber solo están disponibles cuando _malloc_dbg se ha llamado explícitamente a o se ha definido la constante de _CRTDBG_MAP_ALLOC preprocesador.

Valor devuelto

Cuando se completa correctamente, esta función devuelve un puntero a la parte del usuario del bloque de memoria asignado, llama a la nueva función de controlador o devuelve NULL. Para obtener una descripción completa del comportamiento de retorno, vea la sección de comentarios más abajo. Para obtener más información sobre cómo se usa la nueva función de controlador, consulte la malloc función .

Comentarios

_malloc_dbg es una versión de depuración de la malloc función. Cuando _DEBUG no se define, cada llamada a se reduce a _malloc_dbg una llamada a malloc. malloc y _malloc_dbg asignan un bloque de memoria del montón base, pero _malloc_dbg proporciona varias características de depuración: búferes situados a cada lado de la parte del usuario del bloque en el que se va a comprobar si hay pérdidas, un parámetro de tipo de bloque para realizar el seguimiento de tipos de asignación concretos, así como información sobre filename/linenumber para determinar el origen de las solicitudes de asignación.

_malloc_dbg asigna el bloque de memoria con un poco más de espacio que el size solicitado. El administrador de montón de depuración usa el espacio adicional para vincular los bloques de memoria de depuración y proporcionar a la aplicación información de encabezado de depuración y sobrescribir búferes. Cuando se asigna el bloque, la parte del usuario del bloque se rellena con el valor 0xCD y cada uno de los búferes de sobrescritura se rellena con 0xFD.

_malloc_dbg establece errno en ENOMEM si se produce un error de asignación de memoria o si la cantidad de memoria necesaria (incluida la sobrecarga ya mencionada) es mayor que _HEAP_MAXREQ. Para obtener más información sobre este y otros códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.

Para obtener información sobre cómo se asignan, inicializan y administran los bloques de memoria en la versión de depuración del montón base, consulte Detalles del montón de depuración de CRT. Para obtener información sobre los tipos de bloques de asignación y cómo se usan, consulte Tipos de bloques en el montón de depuración. Para obtener información sobre las diferencias entre las funciones de montón estándar y las versiones de depuración, consulte Versiones de depuración de funciones de asignación de montón.

Requisitos

Routine Encabezado necesario
_malloc_dbg <crtdbg.h>

Para obtener más información sobre compatibilidad, consulte Compatibilidad.

Bibliotecas

Solo versiones de depuración de las bibliotecas en tiempo de ejecución de C.

Ejemplo

Para obtener un ejemplo de cómo usar _malloc_dbg, vea crt_dbg1.

Consulte también

Rutinas de depuración
malloc
_calloc_dbg