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는 해당 소멸자를 호출합니다.

동적 메모리 할당의 원리

  1. 프로그램은 메모리를 요청하며, 메모리 관리 시스템은 적절한 크기의 연속된 메모리 블록을 탐색합니다.
  2. 메모리 블록이 찾아지면 그 블록의 시작 주소를 반환합니다.
  3. 메모리 해제 요청 시, 해당 메모리 블록은 시스템에 반환되어 재사용될 수 있게 됩니다.

주의사항: 동적 메모리는 적절하게 관리되어야 합니다. 할당된 메모리는 사용이 끝난 후 반드시 해제하여야 메모리 누수를 방지할 수 있습니다.

반응형