Programming/C/C++/C#
C++ 에서 동적 메모리의 할당(malloc, new)과 해제(free,delete) 원리
휘탱
2017. 8. 30. 00:57
C++에서의 동적 메모리 관리
C++에서는 동적 메모리의 할당 및 해제를 위한 여러 메커니즘을 제공합니다. 이 중 주요한 메커니즘은 malloc
, free
, new
, delete
입니다. 이들의 특징과 사용 방법에 대해 알아보겠습니다.
1. malloc: C 스타일 메모리 할당
malloc
은 C 표준 라이브러리에서 제공하는 함수로, 지정된 크기의 메모리 블록을 할당합니다.- 반환된 메모리는 초기화되지 않아 사용 전 초기화가 필요합니다.
- 예시:
int* ptr = (int*)malloc(sizeof(int));
2. free: malloc으로 할당된 메모리 해제
malloc
을 통해 할당된 메모리는free
를 사용하여 반드시 해제해야 합니다.- 메모리 누수를 방지하는 핵심 방법 중 하나입니다.
3. new: C++ 스타일 메모리 할당
new
는 C++에서 제공하는 연산자로, 해당 타입의 기본 생성자를 호출하며 메모리를 할당합니다.- 예시:
int* p = new int(5);
4. delete: new로 할당된 메모리 해제
new
로 할당된 메모리는delete
연산자를 통해 해제되어야 합니다.- 소멸자가 정의된 경우,
delete
는 해당 소멸자를 호출합니다.
동적 메모리 할당의 원리
- 프로그램은 메모리를 요청하며, 메모리 관리 시스템은 적절한 크기의 연속된 메모리 블록을 탐색합니다.
- 메모리 블록이 찾아지면 그 블록의 시작 주소를 반환합니다.
- 메모리 해제 요청 시, 해당 메모리 블록은 시스템에 반환되어 재사용될 수 있게 됩니다.
주의사항: 동적 메모리는 적절하게 관리되어야 합니다. 할당된 메모리는 사용이 끝난 후 반드시 해제하여야 메모리 누수를 방지할 수 있습니다.
반응형