calloccalloc

Asigna una matriz en la memoria con elementos que se inicializan en 0.Allocates an array in memory with elements initialized to 0.

SintaxisSyntax

void *calloc(
   size_t number,
   size_t size
);

ParámetrosParameters

númeronumber
Número de elementos.Number of elements.

sizesize
Longitud en bytes de cada elemento.Length in bytes of each element.

Valor devueltoReturn Value

calloc devuelve un puntero al espacio asignado.calloc returns a pointer to the allocated space. Se garantiza que el espacio de almacenamiento al que apunta el valor devuelto esté alineado correctamente para el almacenamiento de todo tipo de objeto.The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object. Para obtener un puntero a un tipo distinto de void , use una conversión de tipo en el valor devuelto.To get a pointer to a type other than void, use a type cast on the return value.

ObservacionesRemarks

La función calloc asigna espacio de almacenamiento para una matriz de elementos numéricos , cada uno de los cuales tiene un tamaño de longitud de bytes.The calloc function allocates storage space for an array of number elements, each of length size bytes. Cada elemento se inicializa en 0.Each element is initialized to 0.

calloc establece errno en ENOMEM si se produce un error de asignación de memoria o si la cantidad de memoria solicitada supera _HEAP_MAXREQ.calloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. Para obtener información sobre este y otros códigos de error, vea errno, _doserrno, _sys_errlist y _sys_nerr.For information on this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

En la implementación de Microsoft, si el número o el tamaño es cero, calloc devuelve un puntero a un bloque asignado de tamaño distinto de cero.In the Microsoft implementation, if number or size is zero, calloc returns a pointer to an allocated block of non-zero size. Un intento de leer o escribir a través del puntero devuelto conduce a un comportamiento indefinido.An attempt to read or write through the returned pointer leads to undefined behavior.

calloc utiliza la función de _set_new_mode de C++ para establecer el nuevo modo de controlador.calloc uses the C++ _set_new_mode function to set the new handler mode. El nuevo modo de controlador indica si, en caso de error, calloc es llamar a la rutina del nuevo controlador como se establece en _set_new_handler.The new handler mode indicates whether, on failure, calloc is to call the new handler routine as set by _set_new_handler. De forma predeterminada, calloc no llama a la rutina del nuevo controlador en caso de error al asignar memoria.By default, calloc doesn't call the new handler routine on failure to allocate memory. Puede invalidar este comportamiento predeterminado para que, cuando calloc no pueda asignar memoria, llame a la rutina del nuevo controlador de la misma forma que el new operador cuando se produce un error por la misma razón.You can override this default behavior so that, when calloc fails to allocate memory, it calls the new handler routine in the same way that the new operator does when it fails for the same reason. Para invalidar el valor predeterminado, llame aTo override the default, call

_set_new_mode(1);

temprano en el programa o vincular con NEWMODE. OBJ (vea Opciones de vínculo).early in your program, or link with NEWMODE.OBJ (see Link Options).

Cuando la aplicación se vincula con una versión de depuración de las bibliotecas en tiempo de ejecución de C, calloc se resuelve como _calloc_dbg.When the application is linked with a debug version of the C run-time libraries, calloc resolves to _calloc_dbg. Para obtener más información sobre cómo se administra el montón durante el proceso de depuración, consulte Detalles del montón de depuración de CRT.For more information about how the heap is managed during the debugging process, see The CRT Debug Heap.

calloc está marcado __declspec(noalias) como y __declspec(restrict) , lo que significa que se garantiza que la función no modifica las variables globales y que el puntero devuelto no tiene alias.calloc is marked __declspec(noalias) and __declspec(restrict), meaning that the function is guaranteed not to modify global variables, and that the pointer returned isn't aliased. Para obtener más información, consulte noalias y restrict.For more information, see noalias and restrict.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

RequisitosRequirements

RutinaRoutine Encabezado necesarioRequired header
calloccalloc <stdlib.h> y <malloc.h><stdlib.h> and <malloc.h>

Para obtener información adicional sobre compatibilidad, consulte Compatibilidad.For additional compatibility information, see Compatibility.

EjemploExample

// crt_calloc.c
// This program uses calloc to allocate space for
// 40 long integers. It initializes each element to zero.

#include <stdio.h>
#include <malloc.h>

int main( void )
{
   long *buffer;

   buffer = (long *)calloc( 40, sizeof( long ) );
   if( buffer != NULL )
      printf( "Allocated 40 long integers\n" );
   else
      printf( "Can't allocate memory\n" );
   free( buffer );
}
Allocated 40 long integers

Consulte tambiénSee also

Asignación de memoriaMemory Allocation
ningúnfree
mallocmalloc
reallocrealloc