_realloc_dbg
Reasigna un bloque de memoria especificado en el montón moviendo o cambiando el tamaño del bloque (solo versión de depuración).
Sintaxis
void *_realloc_dbg(
void *userData,
size_t newSize,
int blockType,
const char *filename,
int linenumber
);
Parámetros
userData
Puntero al bloque de memoria asignado previamente.
newSize
Tamaño solicitado para el bloque reasignado (bytes).
blockType
Tipo solicitado para el bloque reasignado: _CLIENT_BLOCK
o _NORMAL_BLOCK
.
filename
Puntero al nombre del archivo de origen que solicitó la realloc
operación o NULL
.
linenumber
Número de línea del archivo de origen donde se solicitó la realloc
operación o NULL
.
Los filename
parámetros y linenumber
solo están disponibles cuando _realloc_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 reasignado, 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 realloc
función .
Comentarios
_realloc_dbg
es una versión de depuración de la realloc
función. Cuando _DEBUG
no se define, cada llamada a se reduce a _realloc_dbg
una llamada a realloc
. realloc
y _realloc_dbg
reasignan un bloque de memoria del montón base, pero _realloc_dbg
admite 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, e información sobre filename
/linenumber
para determinar el origen de las solicitudes de asignación.
_realloc_dbg
reasigna el bloque de memoria especificado con un poco más de espacio que el newSize
solicitado. newSize
podría ser mayor o menor que el tamaño del bloque de memoria asignado originalmente. 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. La reasignación puede dar lugar a mover el bloque de memoria original a una ubicación diferente en el montón y cambiar el tamaño del bloque de memoria. Si se mueve el bloque de memoria, el contenido del bloque original se sobrescribe.
_realloc_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 |
---|---|
_realloc_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
Consulte el ejemplo del _msize_dbg
artículo.