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
는 해당 소멸자를 호출합니다.
동적 메모리 할당의 원리
- 프로그램은 메모리를 요청하며, 메모리 관리 시스템은 적절한 크기의 연속된 메모리 블록을 탐색합니다.
- 메모리 블록이 찾아지면 그 블록의 시작 주소를 반환합니다.
- 메모리 해제 요청 시, 해당 메모리 블록은 시스템에 반환되어 재사용될 수 있게 됩니다.
주의사항: 동적 메모리는 적절하게 관리되어야 합니다. 할당된 메모리는 사용이 끝난 후 반드시 해제하여야 메모리 누수를 방지할 수 있습니다.
반응형
'Programming > C/C++/C#' 카테고리의 다른 글
C# Thread.Sleep vs Task.Delay 차이 (0) | 2017.12.21 |
---|---|
C# WndProc 메시지 받기. (0) | 2017.11.24 |
C# 동기화 처리 (0) | 2017.09.23 |
C# 성능 측정 (0) | 2017.09.05 |
C++ WIndow Styles (0) | 2017.08.12 |
C# 스레드 포어그라운드(Forground)와 백그라운드(Background) (0) | 2017.08.07 |
C# 에코 서버 만들기 (1) | 2017.07.31 |
C# - 스레드를 이용한 외부 데이터 받기(With Tread) (0) | 2017.07.11 |