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 알고리즘
   43   44   45   46   47   48   49   50   51   52   53