C++ malloc, free
1. 개요
1.1 문서 개요
이 문서는 C++에서 C 언어의 표준 함수인 malloc
과 free
를 사용하는 방법과 그 의미에 대해 설명합니다. C++에서는 주로 new
와 delete
를 사용하지만, 특정 라이브러리나 C 코드와의 호환성 등을 위해 malloc
과 free
도 여전히 사용됩니다.
2. 내용
2.1 malloc 함수
malloc
은 C 표준 라이브러리에서 제공되는 함수로, 메모리를 동적으로 할당합니다. 리턴값은 void*
타입이므로 C++에서는 명시적 형변환이 필요합니다.
2.1.1 기본 사용 예
#include <cstdlib>
int* ptr = (int*)malloc(sizeof(int));
if (ptr != nullptr) {
*ptr = 100;
}
2.1.2 배열 할당
int* arr = (int*)malloc(10 * sizeof(int));
2.2 free 함수
free
는 malloc
으로 할당된 메모리를 해제합니다.
free(ptr);
free(arr);
2.3 malloc/free와 new/delete 비교
항목 | malloc/free | new/delete |
---|---|---|
언어 | C (C++에서도 사용 가능) | C++ 전용 |
리턴 타입 | void* | 타입 지정 |
생성자 호출 | 호출되지 않음 | 자동 호출됨 |
예외 처리 | 실패 시 NULL 반환 | 실패 시 예외 throw |
배열 지원 | 명시적 크기 지정 필요 | new[] / delete[] 지원 |
2.4 혼용 시 유의점
malloc
으로 할당한 메모리는free
로만 해제해야 하며,delete
와 혼용 금지- 마찬가지로,
new
로 할당한 메모리는delete
또는delete[]
로 해제해야 하며free
사용 금지
3. 마무리
malloc
과 free
는 C 언어 기반의 메모리 관리 함수로서 C++에서도 제한적으로 사용됩니다. 그러나 생성자 및 소멸자가 호출되지 않으며, 타입 안정성이나 예외 처리 측면에서도 C++의 new/delete
에 비해 제약이 존재합니다. 따라서 C 코드와의 호환이 필요한 경우를 제외하고는 new/delete
사용이 일반적입니다.