반응형
malloc, free
지역변수는 함수를 빠져나가면 소멸되고, 전역변수는 계속 처음부터 끝까지 계속 남아있지만
변수를 동적으로 생성하면 사용자가 임의로 메모리를 할당, 해제 할 수 있다.
* stdlib.h을 포함해야 한다
void* malloc(size_t size); // size 크기만큼 heap에 메모리 할당. 성공 시 할당한 메모리의 주소 반환, 실패 시 NULL 반환
void free(void* ptr); // 해제
// ex
int* ptr = (int*)malloc(sizeof(int)); // void형 포인터는 값을 담기만 하므로 자료형 변환을 시킨다음 쓴다
calloc
malloc과 비슷하나 전달방식에 차이가 있다 (메모리 공간을 0으로 초기화 한다는 특징도 있다)
void* calloc(size_t count, size_t size); // size 크기의 블록을 count 갯수만큼 힙 영역에 할당
realloc
할당된 메모리를 확장하는 함수
void* realloc(void* ptr, size_t size); // ptr이 가리키는 메모리의 크기를 size 만큼 늘린다
// ex
int* arr = (int*)malloc(sizeof(int) * 3);
arr = (int*)realloc(arr, sizeof(int) * 5);
반응형