calloc

Aloca uma matriz na memória com elementos inicializados como 0.

Sintaxe

void *calloc(
   size_t number,
   size_t size
);

Parâmetros

number
Número de elementos.

size
O comprimento, em bytes, de cada elemento.

Valor Retornado

calloc retorna um ponteiro para o espaço alocado. O espaço de armazenamento ao qual o valor retornado apontou com certeza estará alinhado de modo adequado para armazenamento de qualquer tipo de objeto. Para obter um ponteiro para um tipo que não seja void, use uma conversão de tipo no valor retornado.

Comentários

A função calloc aloca espaço de armazenamento para uma matriz de elementos de número, cada um dos bytes de tamanho de comprimento. Cada elemento é inicializado como 0.

calloc define errno como ENOMEM se uma alocação de memória falhar ou se a quantidade de memória solicitada exceder _HEAP_MAXREQ. Para obter informações sobre esse e outros códigos de erro, consulte errno, _doserrno, _sys_errlist e _sys_nerr.

Na implementação da Microsoft, se number ousize for zero, calloc retornará um ponteiro para um bloco alocado de tamanho não zero. Uma tentativa de ler ou gravar por meio do ponteiro retornado leva a um comportamento indefinido.

calloc usa a função _set_new_mode C++ para definir o novo modo de manipulador. O novo modo de manipulador indica se, em caso de falha, calloc deve chamar a nova rotina de manipulador conforme definido por _set_new_handler. Por padrão, calloc não chama a nova rotina de manipulador em caso de falha ao alocar memória. Você pode substituir esse comportamento padrão para que, quando o calloc não alocar memória, ele chame a nova rotina de manipulador da mesma maneira que o operador faz quando falha pelo mesmo motivo. Para substituir o padrão, chame

_set_new_mode(1);

no início do programa ou vincule com NEWMODE. OBJ (consulte Opções de link).

Quando o aplicativo é vinculado a uma versão de depuração das bibliotecas em tempo de executar C, calloc é resolvido para _calloc_dbg. Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte The CRT Debug Heap (O heap de depuração do CRT).

calloc é marcado como e , o que significa que a função tem a garantia de não modificar variáveis globais e que o ponteiro retornado __declspec(restrict) não tem alias. Para obter mais informações, consulte noalias e restrict.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar isso, consulte Estado global no CRT.

Requisitos

Rotina Cabeçalho necessário
calloc <stdlib.h > e < malloc.h>

Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

// 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

Confira também

Alocação de memória
gratuito
malloc
realloc