calloccalloc

0으로 초기화된 요소가 있는 메모리에 배열을 할당합니다.Allocates an array in memory with elements initialized to 0.

구문Syntax

void *calloc(
   size_t number,
   size_t size
);

매개 변수Parameters

numbernumber
요소의 수입니다.Number of elements.

sizesize
각 요소의 길이입니다(바이트).Length in bytes of each element.

Return ValueReturn Value

calloc 은 할당 된 공간에 대 한 포인터를 반환 합니다.calloc returns a pointer to the allocated space. 반환 값이 가리킨 스토리지 공간은 모든 형식의 개체 스토리지를 위해 적절하게 정렬되도록 보장됩니다.The storage space pointed to by the return value is guaranteed to be suitably aligned for storage of any type of object. 이외의 형식에 대 한 포인터를 가져오려면 void 반환 값에 형식 캐스팅을 사용 합니다.To get a pointer to a type other than void, use a type cast on the return value.

설명Remarks

Calloc 함수는 각각 길이 크기 바이트의 숫자 요소 배열에 대 한 저장소 공간을 할당 합니다.The calloc function allocates storage space for an array of number elements, each of length size bytes. 각 요소는 0으로 초기화됩니다.Each element is initialized to 0.

calloc 는 메모리 할당이 실패 하거나 요청 된 메모리 양이 _HEAP_MAXREQ을 초과 하는 경우 errnoenomem 으로 설정 합니다.calloc sets errno to ENOMEM if a memory allocation fails or if the amount of memory requested exceeds _HEAP_MAXREQ. 이러한 오류 코드 및 기타 오류 코드에 대한 내용은 errno, _doserrno, _sys_errlist 및 _sys_nerr을 참조하세요.For information on this and other error codes, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Microsoft 구현에서 number 또는 size 가 0 인 경우 calloc 는 크기가 0이 아닌 할당 된 블록에 대 한 포인터를 반환 합니다.In the Microsoft implementation, if number or size is zero, calloc returns a pointer to an allocated block of non-zero size. 반환 된 포인터를 통해 읽거나 쓰려고 하면 정의 되지 않은 동작이 발생 합니다.An attempt to read or write through the returned pointer leads to undefined behavior.

calloc 는 c + + _set_new_mode 함수를 사용 하 여 새 처리기 모드를 설정 합니다.calloc uses the C++ _set_new_mode function to set the new handler mode. 새 처리기 모드는 실패 시 calloc_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. 기본적으로 calloc 는 메모리 할당 실패 시 새 처리기 루틴을 호출 하지 않습니다.By default, calloc doesn't call the new handler routine on failure to allocate memory. 이 기본 동작을 재정의 하 여 calloc 에서 메모리를 할당 하지 못할 경우 new 연산자가 같은 이유로 실패 했을 때와 동일한 방식으로 새 처리기 루틴을 호출 하도록 할 수 있습니다.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. 기본값을 재정의하려면 다음 코드를To override the default, call

_set_new_mode(1);

프로그램의 초기에 사용 하거나 Newmode를 사용 하 여 연결 합니다. OBJ ( 링크 옵션참조).early in your program, or link with NEWMODE.OBJ (see Link Options).

응용 프로그램이 C 런타임 라이브러리의 디버그 버전에 연결 된 경우 calloc_calloc_dbg를 확인 합니다.When the application is linked with a debug version of the C run-time libraries, calloc resolves to _calloc_dbg. 디버깅 프로세스 동안 힙을 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙을 참조하세요.For more information about how the heap is managed during the debugging process, see The CRT Debug Heap.

calloc 는 및로 표시 됩니다 __declspec(noalias) __declspec(restrict) . 즉, 함수가 전역 변수를 수정 하지 않도록 보장 하 고 반환 된 포인터에 별칭이 지정 되지 않습니다.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. 자세한 내용은 noaliasrestrict를 참조하세요.For more information, see noalias and restrict.

기본적으로이 함수의 전역 상태는 응용 프로그램으로 범위가 지정 됩니다.By default, this function's global state is scoped to the application. 이를 변경 하려면 CRT의 전역 상태를 참조 하세요.To change this, see Global state in the CRT.

요구 사항Requirements

루틴에서 반환된 값Routine 필수 헤더Required header
calloccalloc <stdlib.h> 및 <malloc.h><stdlib.h> and <malloc.h>

호환성에 대한 자세한 내용은 Compatibility을 참조하세요.For additional compatibility information, see Compatibility.

예제Example

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

참고 항목See also

메모리 할당Memory Allocation
늘릴free
mallocmalloc
reallocrealloc