calloc

0으로 초기화된 요소가 있는 메모리에 배열을 할당합니다.

구문

void *calloc(
   size_t number,
   size_t size
);

매개 변수

number
요소의 수입니다.

size
각 요소의 길이입니다(바이트).

반환 값

calloc은 할당된 공간에 대한 포인터를 반환합니다. 반환 값이 가리키는 스토리지 공간은 모든 개체 형식의 스토리지에 적합하게 정렬됩니다. void가 아닌 형식의 포인터를 가져오려면 반환 값에 형식 캐스팅을 사용합니다.

설명

calloc 함수는 각각 size바이트 길이의 number 요소 배열에 대한 스토리지 공간을 할당합니다. 각 요소는 0으로 초기화됩니다.

메모리 할당에 실패하거나 요청된 메모리의 양이 _HEAP_MAXREQ를 초과하는 경우 callocerrnoENOMEM으로 설정합니다. 이 코드 및 기타 오류 코드에 대한 자세한 내용은 , _doserrno, _sys_errlist_sys_nerr를 참조하세요errno.

Microsoft 구현에서 0이거나 size 0 calloc 이면 number 할당된 0이 아닌 크기의 블록에 대한 포인터를 반환합니다. 반환된 포인터를 통해 읽거나 쓰려고 시도하면 정의되지 않은 동작이 발생합니다.

calloc에서는 C++ _set_new_mode 함수를 사용하여 새 처리기 모드설정합니다. 새 처리기 모드는 실패 시 calloc_set_new_handler에서 설정한 대로 새 처리기 루틴을 호출하는지 여부를 나타냅니다. 기본적으로 calloc 메모리를 할당하지 못한 경우 새 처리기 루틴을 호출하지 않습니다. 이 기본 동작을 재정의하여 메모리 할당에 실패할 때 calloc 동일한 이유로 실패할 때 연산자가 수행하는 것과 동일한 방식으로 new 새 처리기 루틴을 호출할 수 있습니다. 기본값을 재정의하려면 다음 코드를

_set_new_mode(1);

프로그램 초기 단계 또는 링크(NEWMODE.OBJ링크 옵션 참조).

애플리케이션이 C 런타임 라이브러리 calloc 의 디버그 버전과 연결되면 .로 확인 _calloc_dbg됩니다. 디버깅 프로세스 중에 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙을 참조하세요.

calloc 가 표시 __declspec(noalias) 되고 __declspec(restrict), 함수가 전역 변수를 수정하지 않도록 보장되고 반환된 포인터가 별칭이 지정되지 않음을 의미합니다. 자세한 내용은 noaliasrestrict를 참조하세요.

기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT의 전역 상태를 참조하세요.

요구 사항

루틴에서 반환된 값 필수 헤더
calloc <stdlib.h><malloc.h>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

예시

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

참고 항목

메모리 할당
free
malloc
realloc