메모리 할당은 왜 할까?
-프로그램이 실행 되면 필요한 저장 공간을 운영 체제를 통해 공간을 할당 받는다.
데이터 영역 : 전역 변수와 static 변수의 이해하기.
1.전역(Global) 변수
-전역 변수는 함수 외부에서 선언되는 변수로 프로그램이 종료 될때 메모리에서 사라진다.
-전역 변수는 모든 함수에서 접근이 가능하므로 어떤 함수든 간에 접근하여 값을 변경 할수 있다.
2.정적(static) 변수
-비록 특정함수에 포함되어 있더라도 함수가 종료되도 메모리상에 그 값이 존재하고 프로그램이 종료될때 전역변수와 같이 비로서 메모리에서 사라진다.
-차이점 : 정적변수는 맨 처음 초기화되면 그 이후로는 값을 변경 할수 없다.
추가 설명 :
함수 내 static 변수(프로그램이 실행 될때 공간만 할당되고, 그 함수가 실행 될때 초기화 된다.)
전역 변수 + static 선언(프로그램이 실행 될때 공간이 이미 할당되고, 선언한 함수가 호출 될때 초기화 한다.)
3. stack 메모리 영역의 용도 및 특징 :
지역 변수, 매개 변수들의 공간
컴파일 타임에 메모리 공간 크기 결정.
프로그램 처음 시작 하는 main 함수 내의 변수 공간 컴파일 타임에 결정된다.
4.힙(heap) 메모리 영역은 어떤 용도로 사용 되는 메모리 공간은 무엇인가?
-런타임에 크기가 결정 되는 메모리 공간
하지만 지역 변수는 컴파일 타임에 스택 영역에 할당 되게 되어 있고,
런타임에 공간 할당은 힙에 할당 되게 되어 있다.
여기서 이러한 런타임에 할당 하기 위해서는
malloc(), free() 를 사용하여 힙 영역에 공간이 할당 되게 하여야 한다.