chyam

[C++] - 동적 메모리 할당 본문

카테고리 없음

[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; //오류.

- 한번에 하나씩 해제할 수 있습니다.