Compartilhar via


calloc

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

void *calloc( 
   size_t num,
   size_t size 
);

Parâmetros

  • num
    Número de elementos.

  • size
    Comprimento em bytes de cada elemento.

Valor de retorno

calloc retorna um ponteiro para o espaço alocado. O espaço de armazenamento apontado pelo valor de retorno tem a garantia de ser alinhado adequadamente para o armazenamento de qualquer tipo de objeto. Para obter um ponteiro para um tipo diferente de void, use uma conversão de tipos no valor de retorno.

Comentários

A função de calloc atribui o espaço de armazenamento para uma matriz de elementos de num , cada um de size de bytes de comprimento. Cada elemento é inicializado como 0.

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

chamadas malloc decalloc para usar a função C++ _set_new_mode para definir o novo modo do manipulador. O novo modo de manipulador indica se, em caso de falha, malloc deve chamar a nova rotina do manipulador conforme definido por _set_new_handler. Por padrão, malloc não chama a nova rotina do manipulador em caso de falha para alocar memória. Você pode substituir esse comportamento padrão para que, quando calloc não aloca memória, malloc chama a nova rotina de manipulador da mesma forma que o operador de new faz quando falha pela mesma razão. Para substituir o padrão, chame

_set_new_mode(1)

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

Quando o aplicativo é vinculado a uma versão de depuração das bibliotecas de tempo de execução C, calloc resolve a _calloc_dbg. Para obter mais informações sobre como o heap é gerenciado durante o processo de depuração, consulte O heap de depuração do CRT.

calloc é __declspec(noalias) marcado e __declspec(restrict), o que significa que a função não é garantida para modificar as variáveis globais, e que o ponteiro retornado não possui alias. Para obter mais informações, consulte noalias e restrinja.

Requisitos

Rotina

Cabeçalho necessário

calloc

<stdlib.h> e <malloc.h>

Para informações adicionais de compatibilidade, consulte Compatibilidade na Introdução.

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 );
}
  

Equivalência do .NET Framework

Não aplicável. Para chamar a função padrão de C, use PInvoke. Para obter mais informações, consulte Exemplos de chamadas de plataformas.

Consulte também

Referência

Alocação de memória

free

malloc

realloc