메모리영역

C# 2008. 12. 9. 19:22
출처 바람처럼 어디론가 나만의 여행을 가고 싶다 | 바람향기
원문 http://blog.naver.com/aroma_guy/20006951137

메모리 영역

 

- 코드(Code)영역

코드 자체를 구성하는 메모리 영역. 즉 프로그램 명령이 위치하는 곳으로 기계어로 제어되는 메모리 영역이다.

 

- 데이터(Data)영역

데이터가 보관된다. 예를 들면 전역변수(global), 정적변수(static), 그 외 초기화된 각종 배열과 구조체, 자료들이 저장된다.

 

- 스택(Stack)영역

프로그램이 자동으로 사용하는 임시 메모리 영역에 해당합니다. 즉 자동 변수를 저장하거나 함수로 인수를 보낼 때, 복귀 번지를 저장할 때 등에 사용된다. 스택 사이즈는 각 프로세스마다 할당된다. 하지만 프로세스가 메모리에 로드될 때 스택 사이즈가 고정되어 있어, 런타임시에 스택 사이즈를 바꿀 수는 없다. 참고로 VC++6.0에서는 Project Settings에서 스택 사이즈를 바꿀 수 있다.

 

- 힙(Heap)영역

프로그래머가 스스로 할당한 메모리 영역(동적 메모리 영역)을 뜻한다. 즉 C의 함수 중에 메모리를 할당하는 함수인 malloc() 등을 사용하여 할당된 메모리가 힙 영역에 해당된다. 메모리 모델에 따라서 사용하는 함수가 달라지는데, 메모리 할당 때는 malloc(), farmalloc() 함수를 사용하고 재할당 때는 realloc() 함수를, 메모리 해제 시는 free()나 farfree() 함수를 사용한다.

 

Posted by Sting!
,