malloc
|
헤더 파일에 정의됨
<stdlib.h>
|
||
|
void
*
malloc
(
size_t
size
)
;
|
||
size
바이트의 초기화되지 않은 저장 공간을 할당합니다.
할당이 성공하면, 기본 정렬 을 갖는 모든 객체 유형에 적합하게 정렬된 포인터를 반환합니다.
만약
size
가 0이면,
malloc
의 동작은 구현에 따라 정의됩니다. 예를 들어, 널 포인터가 반환될 수 있습니다. 또는 널이 아닌 포인터가 반환될 수 있습니다; 그러나 그러한 포인터는
역참조(dereferenced)
되어서는 안 되며, 메모리 누수를 피하기 위해
free
에 전달되어야 합니다.
|
메모리 영역을 해제하는
free
,
free_sized
, 그리고
free_aligned_sized
(C23부터)
또는
realloc
의 이전 호출은
동기화됩니다
동일한 메모리 영역 전체 또는 일부를 할당하는
|
(C11부터) |
목차 |
매개변수
| size | - | 할당할 바이트 수 |
반환값
성공 시, 새로 할당된 메모리의 시작 포인터를 반환합니다. 메모리 누수를 방지하기 위해 반환된 포인터는 free() 또는 realloc() 로 해제해야 합니다.
실패 시, 널 포인터를 반환합니다.
예제
#include <stdio.h> #include <stdlib.h> int main(void) { int *p1 = malloc(4*sizeof(int)); // 4개의 int 배열을 위한 충분한 공간 할당 int *p2 = malloc(sizeof(int[4])); // 동일, 타입을 직접 명시 int *p3 = malloc(4*sizeof *p3); // 동일, 타입 이름 반복 없이 if(p1) { for(int n=0; n<4; ++n) // 배열 채우기 p1[n] = n*n; for(int n=0; n<4; ++n) // 다시 출력하기 printf("p1[%d] == %d\n", n, p1[n]); } free(p1); free(p2); free(p3); }
출력:
p1[0] == 0 p1[1] == 1 p1[2] == 4 p1[3] == 9
참고문헌
- C17 표준 (ISO/IEC 9899:2018):
-
- 7.22.3.4 malloc 함수 (p: 254)
- C11 표준 (ISO/IEC 9899:2011):
-
- 7.22.3.4 malloc 함수 (p: 349)
- C99 표준 (ISO/IEC 9899:1999):
-
- 7.20.3.3 malloc 함수 (p: 314)
- C89/C90 표준 (ISO/IEC 9899:1990):
-
- 4.10.3.3 malloc 함수
참고 항목
|
이전에 할당된 메모리를 해제합니다
(함수) |
|
|
C++ documentation
for
malloc
|
|