'Head First C'를 읽다.
메모리(스택/힙/전역변수/상수/코드)와 포인터(메모리상의 주소)에대한 개념이 잡히다.

프로그램을 실행시키면 운영체계가 메모리를 할당하는데 대충 위와 같은 형태의 구조를 가지게 된다는 것. 메모리 구조의 윗쪽일수록 빈번하게 생성되었다 소멸되었다를 반복한다.

스택(stack)엔 지역변수들을 저장한다. 함수들은 호출되는 순서대로(C의 경우 main()함수부터 시작) 스택안에 자신의 지역변수들을 가지고 차례로 쌓이고 맨 위 함수부터 순서대로 처리를 시작한다. 처리가 끝나면 그 함수의 지역변수들을 제거하고 바로 밑에 있던 함수의 지역변수들을 처리하는 형태.

힙(heap)에는 동적 메모리 공간이 프로그램 실행시 만들어지고 비교적 오래 존재한다. C의 경우 malloc()으로 정확한 메모리 크기를 요청해서 잡고 사용이 끝나면 free()로 제거한다. (자바 등에서는 객체를 이곳에 생성하며 가비지 컬렉터가 더이상 어디에도 참조되지 않는 객체들을 자동으로 제거한다.)

전역 메모리(Globals)에는 전역 변수 등이 담기는데 함수 외부에 존재하여 코드의 어느 위치에서든 볼 수 있으며 프로그램이 실행되는 동안 마음대로 값을 바꿀 수 있다.

상수(Constants)코드(Code)공간엔 각각 상수와 컴파일된 코드가 담기는데 읽기전용으로 값이 바뀌지 않는다.

14/5/29 목