[C언어] 데이터 영역(Data Area), 스택 영역(Stack Area), 힙 영역(Heap Area)

데이터 영역(Data Area)


전역변수, static 변수.


프로그램 시작과 동시에 할당.

프로그램 종료되어야만 메모리에서 소멸.

전역변수가 데이터 영역에 올라가는 일은 main 함수의 호출보다 먼저 진행된다.





스택 영역(Stack Area)


지역변수, 매개변수.




힙 영역(Heap Area)


프로그래머가 관리하는 메모리 영역.

배열의 크기 선언을 반드시 상수로 사용해야 하는 이유



스택, 데이터 영역에 할당될 메모리의 크기는 런타임(run-time)이 아닌 컴파일되는 동안(컴파일 타임)에 결정되어야 한다.



힙에 메모리를 할당하는 것을 두고 '동적 할당(Dynamic Allocation)'이라 한다.

반대로 스택과 데이터 영역에 메모리를 할당하는것 '정적 할당(Static Allocation)이라 한다.




malloc 함수 & free 함수.


malloc 함수.

동적으로 메모리를 할당하는 함수이다. = 힙 영역에 메모리를 할당하는 함수.

할당한 메모리의 주소(첫번째 바이트의 주소)를 리턴한다.

만약에 메모리 부족으로 인해서 메모리 할당에 실패했다면, NULL 포인터가 리턴되므로, 리턴된 포인터가 NULL인지 아닌지 확인해야한다.