25-1 C언어의 메모리 구조

- 프로그램이 실행되면 메모리에 데이터영역, 스택영역, 힙영역이 생긴다.

- 데이터 영역 : 전역 변수와 static변수가 저장 된다. 프로그램이 종료될 때까지 유지된다.
- 스택 영역 : 지역변수와 매개 변수가 저장된다. 해당하는 함수가 종료될 때까지 유지된다.
- 힙 영역 : 프로그래머가 관리하는 메모리 영역이다. 

- 배열 선언시 상수를 써야 하는 이유 : 스택과 데이터 영역에 할당될 메모리의 크기는 컴파일타임에 결정되어야 한다.

- 할당해야 할 메모리의 크기를 런타임에 결정해야 하는 경우, 힙 영역을 사용한다.


25-2 메모리 동적 할당

- 힙에 메모리를 할당하는 것을 동적 할당이라 한다.

void* malloc(size_t size);
- size만큼 메모리를 할당한다. 실패하면 NULL포인터를 리턴한다.

- 힙에 할당된 메모리 공간에는 포인터를 사용해서 접근해야 한다.

int* i = (int*)malloc(sizeof(int));
- void포인터로 리턴하고 있기 때문에 사용하기 전에 위처럼 형 변환을 해주어야 한다.

void free(void* ptr);
-해당하는 메모리 공간을 해제한다.

void *calloc(size_t elt_count, size_t elt_size);
- elt_size 크기의 변수를 elt_count 개수만큼 할당.



'학부 전공 > C' 카테고리의 다른 글

27. 모듈화 프로그래밍  (0) 2010.07.16
26. 매크로와 전처리기  (0) 2010.07.16
24. 파일 입출력  (0) 2010.07.16
23. 구조체와 사용자 정의 자료형 2  (0) 2010.07.15
22. 구조체와 사용자 정의 자료형  (0) 2010.07.15

+ Recent posts