malloc
메모리 블록을 할당
- 동적할당으로 배열을 사용할 수 있다.
int* arr1 = (int*)malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++)
printf("%d\n", arr1[i]);
free(arr1);
calloc
메모리 블록을 할당하고 0으로 초기화
- malloc과 같지만 0으로 초기화 되는 것 만 다름
int* arr2 = (int*)calloc(10, sizeof(int));
for (int i = 0; i < 10; i++)
printf("%d\n", arr2[i]);
free(arr2);
realloc
메모리 블록을 재할당
대게 동적할당한 메모리를 확장할 때 사용한다.
재할당에 실패한 경우 NULL을 반환하며, 기존의 포인터에 덮어 쓰다가 실패하면 메모리 누수가 발생할 수 있으니 주의해야 함.
int* arr3 = (int*)malloc(sizeof(int) * 10);
for (int i = 0; i < 10; i++) {
arr3[i] = i;
printf("%d\n", arr3[i]);
}
int* arr4 = (int*)realloc(arr3, sizeof(int) * 20);
for (int i = 10; i < 20; i++) {
arr4[i] = i;
}
for (int i = 0; i < 20; i++)
printf("%d\n", arr4[i]);
free(arr4);
free
할당한 메모리 공간을 해제
int* p = (int*)malloc(sizeof(int));
*p = 5;
printf("%d\n", *p);
// 5를 출력
free(p);
printf("%d\n", *p);
// 쓰레기값 출력
'아카이빙 > C, C++' 카테고리의 다른 글
strcpy와 strncpy (0) | 2018.05.27 |
---|---|
string과 character 배열 (0) | 2018.05.26 |
sizeof 포인터 (0) | 2018.05.26 |
sizeof는 함수? 연산자? (0) | 2018.05.26 |
[C/C++] define, NULL, sizeof 헷갈리는 예시들 (0) | 2018.05.24 |