61. C++ malloc, free

C++ malloc, free

1. 개요

1.1 문서 개요

이 문서는 C++에서 C 언어의 표준 함수인 mallocfree를 사용하는 방법과 그 의미에 대해 설명합니다. C++에서는 주로 newdelete를 사용하지만, 특정 라이브러리나 C 코드와의 호환성 등을 위해 mallocfree도 여전히 사용됩니다.

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 함수

freemalloc으로 할당된 메모리를 해제합니다.

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. 마무리

mallocfree는 C 언어 기반의 메모리 관리 함수로서 C++에서도 제한적으로 사용됩니다. 그러나 생성자 및 소멸자가 호출되지 않으며, 타입 안정성이나 예외 처리 측면에서도 C++의 new/delete에 비해 제약이 존재합니다. 따라서 C 코드와의 호환이 필요한 경우를 제외하고는 new/delete 사용이 일반적입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!
위로 스크롤