Compartir a través de


_aligned_recalloc_dbg

Cambia el tamaño de un bloque de memoria asignado con _aligned_malloc o _aligned_offset_malloc e inicializa la memoria en 0 (solo versión de depuración).

Sintaxis

void * _aligned_recalloc_dbg(
   void * memblock,
   size_t num,
   size_t size,
   size_t alignment,
   const char *filename,
   int linenumber
);

Parámetros

memblock
Puntero de bloque de memoria actual.

number
Número de elementos.

size
Tamaño en bytes de cada elemento.

alignment
Valor de la alineación, que debe ser un entero potencia de 2.

filename
Puntero al nombre del archivo de código fuente que solicitó la operación de asignación o 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 NULL.

Valor devuelto

_aligned_recalloc_dbg devuelve un puntero void al bloque de memoria reasignado (y, probablemente, trasladado). El valor devuelto es NULL si el tamaño es cero y el argumento de búfer no NULLes , o si no hay suficiente memoria disponible para expandir el bloque al tamaño especificado. En el primer caso, se libera el bloque original. En el segundo, el bloque original permanece inalterado. El valor devuelto apunta a un espacio de almacenamiento correctamente alineado para almacenar cualquier tipo de objeto. Para obtener un puntero a un tipo distinto de void, use una conversión de tipo en el valor devuelto.

Se trata de un error para reasignar la memoria y cambiar la alineación de un bloque.

Comentarios

_aligned_recalloc_dbg es una versión de depuración de la _aligned_recalloc función. Cuando _DEBUG no se define, cada llamada a se reduce a _aligned_recalloc_dbg una llamada a _aligned_recalloc. Tanto _aligned_recalloc como _aligned_recalloc_dbg reasignan un bloque de memoria en el montón base, pero _aligned_recalloc_dbg admiten varias características de depuración: búferes en cualquier lado de la parte del usuario del bloque para probar las pérdidas e filename/linenumber información para determinar el origen de las solicitudes de asignación. El seguimiento de tipos de asignación específicos con un parámetro de tipo de bloque no es una característica de depuración compatible para las asignaciones alineadas. Las asignaciones alineadas aparecerán como un _NORMAL_BLOCK tipo de bloque.

_aligned_recalloc_dbg reasigna el bloque de memoria especificado con un poco más de espacio del solicitado (number * size), que 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 mover el bloque de memoria original a una ubicación diferente en el montón y cambiar el tamaño del bloque de memoria. La parte del usuario del bloque se rellena con el valor 0xCD y los búferes de sobrescritura se rellenan con 0xFD.

_aligned_recalloc_dbg establece errno en ENOMEM si se produce un error de asignación de memoria. Se devuelve EINVAL 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.

Además, _aligned_recalloc_dbg valida sus parámetros. Si alignment no es una potencia de 2, esta función invoca al controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, la función devuelve NULL y establece errno en EINVAL.

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 sus versiones de depuración, consulte Depuración de versiones de funciones de asignación de montón.

Requisitos

Routine Encabezado necesario
_aligned_recalloc_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.

Consulte también

Rutinas de depuración