정의
우리가 코딩을 할 때, RAM을 접근하여 일부 메모리를 사용하게 된다. 사용하는 영역은 아래와 같은 그림으로 나타낼 수 있다.
코드 영역: 실행할 프로그램의 코드
데이터 영역: 전역(global)변수, 정적(static) 변수
heap영역: 동적 할당
stack 영역: 지역변수, 매개변수, 함수
각 영역마다 저장되는 변수와 저장할 수 있는 용량이 다르다. 코딩을 할 때, 중요하게 여겨야할 영역은 제목에서 봤듯이 stack과 heap영역이다.
stack
stack영역은 우리가 주로 사용하는 함수의 매개변수나 함수내의 지역변수를 할당할 때, 주로 쓰인다. stack영역의 용량은 비교적 크지않아 제귀함수와 같은 stackoverflow에러를 발생시키는 알고리즘을 사용할 때는 주의를 해야한다.
heap
heap영역은 c++기준 new와 delete를 통해 동적할당을 하는 경우 접근하게 되는 영역이다. 이는 stack영역에 비해 용량이 크지만 runtime중 동적할당을 할 수 있기 때문에 메모리누수와 같은 문제가 발생할 수 있다.
'c++' 카테고리의 다른 글
정적 멤버 함수(static member variable) (0) | 2023.04.05 |
---|---|
함수 포인터 (0) | 2023.02.15 |
함수 오버로딩 (0) | 2023.02.11 |