std:: calloc
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<cstdlib>
|
||
|
void
*
calloc
(
std::
size_t
num,
std::
size_t
size
)
;
|
||
num 개의 size 크기 객체 배열을 위한 메모리를 할당하고, 모든 비트를 0으로 초기화합니다( 대상 영역에 객체를 암묵적으로 생성 함).
할당이 성공하면, 모든 객체 유형에 적합하게 정렬된 할당된 메모리 블록에서 가장 낮은(첫 번째) 바이트를 가리키는 포인터를 반환합니다.
만약 size 가 0이면, 동작은 구현에 따라 정의됩니다 (널 포인터가 반환될 수도 있고, 저장 공간에 접근하는 데 사용될 수 없는 일부 널이 아닌 포인터가 반환될 수도 있습니다).
|
다음 함수들은 스레드 안전성을 요구합니다:
특정 저장 단위를 할당하거나 해제하는 이러한 함수들의 호출은 단일 전체 순서로 발생하며, 각 해제 호출은 이 순서에서 다음 할당(있는 경우)에 대해 happens-before 관계를 가집니다. |
(C++11부터) |
목차 |
매개변수
| num | - | 객체 개수 |
| size | - | 각 객체의 크기 |
반환값
성공 시, 새로 할당된 메모리의 시작 포인터를 반환합니다. 메모리 누수를 방지하기 위해 반환된 포인터는 std::free() 또는 std::realloc() 로 해제해야 합니다.
실패 시, 널 포인터를 반환합니다.
참고 사항
정렬 요구 사항으로 인해, 할당된 바이트 수는 반드시 num * size 와 같지 않을 수 있습니다.
모든 비트를 0으로 초기화하는 것이 부동 소수점이나 포인터가 각각 0.0과 널 포인터 값으로 초기화됨을 보장하지는 않습니다 (비록 모든 일반적인 플랫폼에서 이것이 사실이지만).
원래(C89에서), 다음과 같은 코드를 수용하기 위해 제로 크기 지원이 추가되었습니다.
OBJ *p = calloc(0, sizeof(OBJ)); // "길이가 0인" 자리 표시자 ... while (1) { p = realloc(p, c * sizeof(OBJ)); // 크기가 안정될 때까지 재할당 ... // c를 변경하거나 루프를 탈출할 수 있는 코드 }
예제
#include <cstdlib> #include <iostream> int main() { int* p1 = (int*)std::calloc(4, sizeof(int)); // 4개의 int 배열을 할당하고 0으로 초기화 int* p2 = (int*)std::calloc(1, sizeof(int[4])); // 동일하게, 배열 타입을 직접 명시 int* p3 = (int*)std::calloc(4, sizeof *p3); // 동일하게, 타입 이름을 반복하지 않음 if (p2) for (int n = 0; n < 4; ++n) // 배열 출력 std::cout << "p2[" << n << "] == " << p2[n] << '\n'; std::free(p1); std::free(p2); std::free(p3); }
출력:
p2[0] == 0 p2[1] == 0 p2[2] == 0 p2[3] == 0
참고 항목
|
C 문서
참조:
calloc
|