동적 메모리를 이용하여 컴파일시 크기를 확정할 수 없는 데이터를 다룰 수 있다.
스택과 힙
스택은 층층이 쌓인 햄버거에 비유할 수 있다. 제일 위의 햄버거는 프로그램의 현재 스코프를 표현한다.(주로 실행중인 함수). 실행중인 함수에서 선언된 변수는 모두 최상단의 햄버거에 해당하는 최상단 스택 프레임(stack frame)의 메모리 공간에 담겨 있다.
스택 프레임은 각각의 함수마다 독립적인 메모리 공간을 제공한다. 함수의 실행이 끝나면 해당 스택 프레임이 삭제되기 때문에 함수 안에서 선언된 로컬 변수가 더 이상 메모리 공간을 차지하지 않는다. 즉, 메모리 할당 해제(deallocate)가 필요하지 않다는 것이다.
힙은 스택프레임과는 완전히 독립적인 메모리 공간이다. 함수가 끝난 후에도 그 안에서 사용하던 변수를 계속 유지하고 싶다면 힙에 저장한다.
힙에 할당된 메모리 공간은 직접 할당 해제해줘야 한다.
'C++ > 기본 상식' 카테고리의 다른 글
[C++]금지된 Forbidden의 C++ (0) | 2023.03.02 |
---|