카테고리 없음
[C++] - 동적 메모리 할당
chyam_eun
2025. 3. 25. 12:33
동적 할당이란?
- 실행 시간동안 사용할 메모리 공간을 할당하는 것입니다.
- 배열의 크기를 가변적으로 생성할 수 있습니다.
- 메모리 영역 중 힙 영역에 저장됩니다.
- 사용자가 원할때 메모리에 할당하고 해제할 수 있으며, 메모리를 해제하지 않을 경우 '메모리 누수' 가 발생합니다.
C++에서의 동적할당은 new 와 delete 연산자를 통해 수행됩니다.
1) 기본 자료형
int *p = new int;
*p = 10;
cout << *p; // 10
...
delete p;
- new 연산자는 데이터 타입의 크기만큼 힙으로부터 메모리를 할당받아 주소를 리턴합니다.
- delete 연산자는 포인터 변수가 가리키는 메모리를 힙으로 반환합니다.
int *p = new int(10);
delete p;
- 메모리를 할당받을 때 초기 값을 지정해서 초기화 할 수 있습니다.
2) 배열
int *pn = new int[3];
pn[0] = 2;
pn[1] = 4;
pn[2] = 5;
for(int i = 0; i < 3; i++){
cout << pn[i] << endl; // 2 4 5
}
...
delete[] pn;
int *pn = new int[3] {2,4,5};
for(int i = 0; i < 3; i++){
cout << pn[i] << endl; // 2 4 5
}
delete[] pn;
- 메모리를 할당받을 때 초기 값을 지정해서 초기화 할 수 있습니다.
int *p1 = new int;
int *p2 = new int;
...
delete p1,p2; //오류.
- 한번에 하나씩 해제할 수 있습니다.