반응형
메모리 릭을 방지하기 위해 할당된 메모리는 할당된 함수 범위 내에서 해제하는 것을 원칙으로 삼는 것이 좋다.
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);
반응형
'System Programmings > C++' 카테고리의 다른 글
프로그램 속도 측정 (0) | 2017.07.10 |
---|---|
[C++] 클래스 객체간의 연산을 도와주는 operator (0) | 2014.12.06 |
[C++] MS에서 사용하는 헝가리안 표기법 (0) | 2014.10.16 |
[C++] 가상 함수 (0) | 2014.10.16 |
[C++] 이미지 바이너리 읽기 (4) | 2014.03.10 |