본문 바로가기

Language/C++

[C++] 동적 할당

728x90
반응형

프로그램이 실행되는 런타임동안 사용자가 직접 공간의 크기나 시점을 결정하여 힙 영역의 메모리를 할당 받는것을 동적할당 이라고 한다. 사용자에 의해 메모리가 동적으로 할당이 되면 프로그램이 끝날 때 까지 유지되므로, 메모리 공간 사용이 끝나면 메모리 낭비(누수)를 줄이기 위해 명시적으로 메모리 할당을 해제 해주어야한다. 

 

지금껏 사용하던 지역변수나 매개변수는 정적할당으로 스택영역에 메모리가 할당되어 왔는대 스택영역의 경우 메모리가 작은 크기로 제한되어 있기 때문에 그래픽 같이 용량이 큰 데이터를 저장할 경우 오버플로우의 발생으로 프로그램이 동작하지 않을 가능성이 크다. 따라서 동적할당을 이용하여 운영체제에서 관리하는 좀 더 큰 메모리 영역인 힙을 통해 정적할당의 단점을 극복 할 수있다.

 

C 언어에서는 힙 상의 메모리 할당을 지원하는 malloc과 free 함수를 사용했다. C++에서도 malloc과 free 함수를 사용할 수 있다. 하지만, 언어 차원에서 지원하는 것은 new와 delete이다. new는 malloc과 대응되는 것으로 메모리를 할당하고 delete는 free에 대응되는 것으로 메모리를 해제한다.

타입* 포인터명 = new 타입;
delete 포인터명;

메모리 공간만 할당받아 오는 것이므로 해당 할당받은 공간의 변수명이 존재하지 않기 때문에 포인터 변수로만 존재할 수 있다.

 

new로 배열 할당하기

 

728x90
반응형

'Language > C++' 카테고리의 다른 글

[C++] OOP - 생성자와 소멸자  (0) 2021.07.09
[C++] 공용체, 열거체  (0) 2021.07.03
[C++] 구조체  (0) 2021.07.03
[C++] 참조자(레퍼런스)  (0) 2021.06.30
[C++] 포인터  (0) 2021.06.28