메모리 구조는 프로그램이 실행되는 동안 OS가 사용되는 메모리 공간을 분류하는 방법을 말한다. 메모리를 서랍장 수납 공간이라 가정하면 각각의 유사한 성향의 데이터를 묶어서 관리가 용이해지고, 찾는 속도도 더 빠를 수 있다.
프로그램의 명령어, 함수 및 프로그램 코드를 저장하는 데 사용된다. 이 영역은 실행 가능한 프로그램의 명령어들이 위치하며, 실행 중인 프로그램의 명령어가 저장된다.
전역 변수와 정적(Static) 변수를 저장하는 데 사용된다. 언제든 값을 변경할 수 있고 초기화가 가능하다. 이 변수들은 프로그램의 시작 시점부터 종료 시점까지 메모리에 상주한다.
동적으로 할당된 메모리를 관리하는 데 사용된다. 힙은 개발자가 직접 할당 및 해제할 수 있는 메모리 영역이며 주로 동적으로 생성된 객체, 배열 또는 자료구조를 저장하는 데 사용된다.
지역변수, 매개변수를 저장하는 데 사용된다. 스택은 후입선출(LIFO, Last-In-First-Out) 방식으로 동작한다. 가장 최근에 추가된 항목이 가장 먼저 제거되는 구조를 의미한다.
정적(Static) 변수와 상수를 저장하는 데 사용된다. 프로그램의 시작 시점부터 종료 시점까지 메모리에 상주한다는 점은 같지만 데이터 영역과 달리 한 번 초기화된 이후엔 값을 변경할 수 없다는 점이 다르다.
데이터가 들어온 순서의 역순으로 제거되는 데이터 구조를 의미한다. 이는 가장 최근에 추가된 데이터가 가장 먼저 제거되는 방식이다. 스택(Stack)은 후입선출을 기반으로 동작하는 자료구조 중 하나다. 데이터를 추가할 때는 스택의 맨 위에 데이터를 쌓고(push), 제거할 때는 맨 위에 있는 데이터를 꺼내는(pop) 방식으로 동작한다.