프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다.
프로그램에서 사용되는 변수들을 저장할 메모리가 필요하다.
컴퓨터의 운영체제(OS)는 프로그램의 실행을 위해서 다양한 메모리 공간을 제공한다.

프로그램의 코드가 저장되는 영역
CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리
프로그램의 전역 변수와 정적(static) 변수가 저장되는 영역
데이터 영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸
함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역
스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸
푸시(push) 동작으로 데이터를 저장하고, 팝(pop) 동작으로 데이터를 인출(데이터를 가져온다.)
후입선출(LIFO, Last-In First-Out) 방식에 따라 동작
스택 영역은 메모리의 높은 주소에서 낮은 주소의 방향으로 할당됨
사용자가 직접 관리해야 하는 메모리 영역
사용자에 의해 메모리 공간이 동적으로 할당되고 해제
힙 영역은 메모리의 낮은 주소에서 높은 주소의 방향으로 할당됨