Page 48 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 48
조금만 더! C 언어의 메모리 구조
프로그램을 실행하면 운영체제는 프로그램이 사용할 메모리 영역을 할당합니다. 할당하는 메모리 영역은
크게 데이터(Data), 스택(Stack), 힙(Heap) 영역으로 나누어집니다.
할당 시기: 프로그램이 실행될 때마다 할당
할당 장소: 메인 메모리(RAM)
할당 용도: 프로그램 실행에 필요한 메모리 영역(지역 변수, 전역 변수 선언을 위해) 할당
데이터(Data) 영역
• 전역 변수와 정적(static) 변수가 할당되는 영역
• 프로그램을 시작하면 할당하고, 프로그램을 종료하면 메모리에서 해제함
스택(Stack) 영역
• 함수 호출 시 생성되는 지역 변수와 매개변수가 저장되는 영역
• 함수 호출이 완료되면 사라짐
힙(Heap) 영역
• 필요에 따라 동적으로 메모리를 할당
힙 영역은 할당해야 할 메모리 영역의 크기를 프로그램이 실행되는 동안(run time) 결정해야 하는 경우에
사용합니다.
전역 변수 데이터 영역
정적 변수 힙 영역
프로그래머
프로그램이 실행될 때 할당
크기 결정
컴파일할 때 크기 결정 지역 변수
매개 변수
스택 영역
힙 영역은 관리가 가능한 데이터 외에 다른 형태의 데이터를 관리하기 위한 빈 공간(free space)입니다.
즉, 동적 할당(dynamic allocation)을 통해 생성된 동적 변수(dynamic variables)를 관리하기 위한 영역
입니다.
힙 영역은 위의 다른 영역(데이터, 스택 등)을 모두 할당하고 남은 공간입니다. 남은 공간이라 하여 영역에
제한이 있는 것은 아니고 시스템의 메모리 영역의 여유 공간에 따라 달라집니다. Java나 C++ 등에서
‘new’를 사용했던 것처럼 C에서는 malloc, calloc 함수 등을 사용해 동적으로 생성하는 변수를 저장하
기 위해 할당하는 영역이라고 생각하면 됩니다. 데이터 영역과 스택 영역은 컴파일러가 미리 공간을 예측
48 C 알고리즘