카테고리 없음

malloc, free (메모리 동적 할당)

zuyo 2019. 5. 9. 01:36
반응형

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);
반응형