C++ 기본 문법: 동적 메모리 할당 (new / delete)
1. 동적 메모리 할당이란?
프로그램 실행 중에 필요한 만큼 메모리를 할당하는 방식임.
정적 배열은 크기를 미리 정해야 하지만, 동적 할당은 런타임에 결정 가능
2. new / delete
기본 문법
int* p = new int; // int 1개 할당
*p = 100;
cout << *p << endl;
delete p; // 메모리 해제
new
: 메모리 할당 (heap 영역에)delete
: 할당한 메모리 해제- 할당받은 주소는 포인터 변수에 저장해야 함
3. 동적 배열
1차원 배열 할당
int* arr = new int[5]; // int 5개짜리 배열 할당
for (int i = 0; i < 5; i++)
arr[i] = i * 10;
for (int i = 0; i < 5; i++)
cout << arr[i] << " ";
delete[] arr; // 배열은 delete[] 로 해제
2차원 배열 할당
int** matrix = new int*[3]; // 행 3개
for (int i = 0; i < 3; i++)
matrix[i] = new int[4]; // 열 4개
matrix[0][0] = 1; // 예시 접근
// 메모리 해제
for (int i = 0; i < 3; i++)
delete[] matrix[i];
delete[] matrix;
4. 주의사항
- delete 안 하면 → 메모리 누수(leak)
delete
후 포인터는nullptr
로 초기화 권장- delete는 new로 할당한 메모리만 해제해야 함
- 배열은 반드시
delete[]
사용해야 함
5. 스마트 포인터로 대체 가능
C++11부터는 unique_ptr
, shared_ptr
등의 스마트 포인터로 메모리 자동 관리 가능
직접 delete
안 해도 됨
#include <memory>
unique_ptr<int> ptr = make_unique<int>(100);
cout << *ptr << endl;
요약
new
는 힙에 메모리 할당delete
로 꼭 해제해야 메모리 누수 방지- 배열 할당시
new[]
, 해제시delete[]
- C++11 이후는
unique_ptr
,shared_ptr
사용 추천
'코딩 > c++' 카테고리의 다른 글
C++ 객체지향 문법(8) (0) | 2025.06.02 |
---|---|
C++ 기본 문법(7) (0) | 2025.06.02 |
C++ 기본 문법(5) (0) | 2025.06.02 |
C++ 기본 문법(4) (0) | 2025.06.02 |
C++ 기본 문법(3) (0) | 2025.06.02 |