본문 바로가기

System Programmings/C++

동적 할당 방법

반응형

메모리 릭을 방지하기 위해 할당된 메모리는 할당된 함수 범위 내에서 해제하는 것을 원칙으로 삼는 것이 좋다.


1. malloc

Byte 만큼 메모리를 할당한다

초기값 : 쓰레기값

주의 : 할당 뒤 바로 memset등으로 0값 초기화시에는 calloc 사용이 바람직

char *memory = (char*)malloc(sizeof(char) * 10);
free(memory);


2. calloc

Byte 만큼 메모리를 할당한다

초기값 : 0

주의 : 0값 초기화가 필요 없거나 다른 값으로 초기화시에는 malloc 사용이 바람직

char *memory = (char*)calloc(sizeof(char), 10);
free(memory);


3. new

Type 만큼 메모리를 할당한다

초기값 : 쓰레기값
주의 : 배열인 경우 delete에 [] 사용

char *memory = new char;
delete memory;
char *memory = new char[10];
delete[] memory;


4. realloc
malloc, calloc로 할당된 메모리 크기를 변경한다

초기값 : 쓰레기값
주의 : 변경될 크기가 커지는 현재보다 크다면 기존 데이터 값은 보존되나, 작아진다면 그 크기만큼 쓰레기값으로 채워진다

realloc(memory, 10);


malloc과 calloc은 Byte만큼 할당 하는 특징을 이용해 int(4Byte)를 char(1Byte) *4로 계산하여 아래 처럼 할당이 가능하다

int *memory = (int*)malloc(sizeof(char) * 4);
free(memory);




반응형