_recalloc
Combinación de realloc y calloc. Reasigna una matriz en memoria y se inicializa sus elementos en 0.
void *_recalloc(
void *memblock
size_t num,
size_t size
);
Parámetros
memblock
Puntero al bloque de memoria previamente asignado.num
Número de elementos.size
Longitud en bytes de cada elemento.
Valor devuelto
_recalloc devuelve un puntero de void (y posiblemente desplazado) al bloque de memoria reasignado.
Si no hay suficiente memoria disponible para expandir el bloque al tamaño especificado, el bloque original permanece sin cambios, y se devuelve NULL .
Si el tamaño solicitado es cero, el bloque indicada por memblock se libera; el valor devuelto es NULL, y memblock se permite informar sobre un bloque liberado.
Los puntos del valor devuelto a un espacio de almacenamiento que se garantiza alinearse convenientemente para el almacenamiento de cualquier tipo de objeto. Para obtener un puntero a un tipo distinto de void, utilice una conversión de tipo del valor devuelto.
Comentarios
Los cambios de función derecalloc de _el tamaño de un bloque de memoria asignado. Los puntos del argumento de memblock al principio del bloque de memoria. Si memblock es NULL, _recalloc se comporta de la misma manera que calloc y asigna un nuevo bloque de num * bytes de size . Cada elemento se inicializa en 0. Si memblock no es NULL, debe ser un puntero devuelto por una llamada anterior a calloc, a malloc, o a realloc.
Dado que el nuevo bloque puede estar en una nueva ubicación de memoria, no garantiza que el puntero devuelto por _recalloc para ser el puntero pasado a través del argumento de memblock .
_recalloc establece errno a ENOMEM si se produce un error en la asignación de memoria o si la cantidad de memoria solicitada supera _HEAP_MAXREQ. Para obtener información sobre estos y otros códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.
llamadas realloc derecalloc para usar la función de C++ _set_new_mode para establecer el nuevo modo de controlador. El nuevo modo de controlador indica si, en caso de error, realloc debe llamar a la nueva rutina de controlador como se establece por _set_new_handler. De forma predeterminada, realloc no llama a la nueva rutina del controlador si no se puede asignar memoria. Puede invalidar este comportamiento predeterminado para que, cuando _recalloc no puede para asignar memoria, realloc llame a la nueva rutina del controlador de la misma manera que el operador de new cuando falla por la misma razón. Para reemplazar el valor predeterminado, llame
_set_new_mode(1)
al principio del programa, o vínculo con NEWMODE.OBJ.
Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución de C, _recalloc resuelve a _recalloc_dbg. Para obtener más información sobre cómo la pila se administra durante el proceso de depuración, vea El montón de depuración de CRT.
_recalloc es __declspec(noalias) marcado y __declspec(restrict), lo que significa que la función está garantizada para no modificar variables globales, y que el puntero devuelto no es con alias. Para obtener más información, vea noalias y limitado.
Requisitos
Rutina |
Encabezado necesario |
---|---|
_recalloc |
<stdlib.h> y <malloc.h> |
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Equivalente en .NET Framework
No es aplicable Para llamar a la función estándar de C, use PInvoke. Para obtener más información, vea Ejemplos de invocación de plataforma.