본문 바로가기
C++/메모리

[C++] 메모리 구조 (코드, 데이터, 힙, 스택)

by bigpicture 2022. 8. 17.
반응형

먼저 알기 : 저장장치

컴퓨터의 저장장치에는 램과 하드디스크가 있습니다. 컴퓨터에서 램과 하드디스크 용량을 확인하는 방법을 먼저 알아봅시다. 

먼저 램입니다. 내컴퓨터에서 우클릭을 하고 속성에 들어가보면 '설치된 RAM' 옆에 값이 써있을겁니다. 저는 16GB라고 써있네요. 이 값이 램의 용량입니다. 

하드디스크 용량은 내컴퓨터를 더블클릭해서 열면 알 수 있습니다. 장치 및 드라이브에 표시된 드라이브들이 하드디스크입니다. 

램과 하드디스크를 구분하는 아주 좋은 예가 있습니다. 책상과 캐비넷 예시입니다. 램은 책상이고 하드디스크는 케비넷입니다. 케비넷에서 필요한걸 꺼내서 책상에 올려놓고 작업하듯, 하드디스크에서 원하는 프로그램을 램에 올려놓고 작업하게 됩니다. 책상이 클 수록 이것저것 더 많이 올려놓고 작업 할 수 있는 것처럼, 램 용량이 커야 이런저런 프로그램을 많이 열어 놓고 작업할 수 있습니다. 램을 메모리라고 부릅니다. 

 

메모리 구조

프로그램을 실행 할 때 컴퓨터가 메모리를 어떻게 사용하는지 알아봅시다. 프로그램을 실행한다는 것은 우리가 코딩해 놓은 코드가 실행되는 것과 같습니다. 프로그램이 실행되면 메모리는 네개의 영역으로 구분됩니다. 

코드영역
데이터영역
힙영역
스택영역

먼저 질문을 하나 해봅시다. 메모리를 굳이 왜 나누는걸까요? 나눠서 관리하는게 여러가지 장점이 있기 때문일겁니다. 실수를 줄일 수 있고, 속도가 빨라지고, 관리하기 편하고 등등 말입니다.

각 영역에 무엇이 저장되는지 간단히 요약하면 아래와 같습니다. 

코드영역 (말 그대로 코드가 저장. 소스코드)
데이터영역 (전역변수, static 변수)
스택영역 (지역변수, 매개변수)
힙영역 (동적 할당)

반응형

댓글