Memory allocation process 에 따라
RAM은 4가지 area로 구성됩니다.
Local variable or stack
Free memory or Heap
Static and global variables
Code Area
지역 변수는 스택에 저장됩니다.
code area는 C program insturction에 의해 머신코드로 변환후 저장됩니다.
static과 global변수들을 위한 공간도 따로 있습니다.
그리고 free memory area를 heap이라고 합니다. heap의 크기는 프로그램실행중 계속 바뀝니다.
Data
Data: data(초기화o)와 bss(초기화x)로 이루어져있습니다. 초기화된 데이터는 data에 저장, 초기화되지않은 데이터는 bss에 저장됩니다.
함수 내부에 선언된 static변수의 경우 프로그램이 실행될 때 공간만 할당되고, 그 함수가 실행될때 초기화됩니다.
Heap: free memory area(DMA)-runtime에 결정(compile때체킹x). ex) C-malloc(), C++-new연산자
Stack: static memory area(SMA)-compile time 에 결정. 스택의 크기는 각 프로세스마다 할당 됩니다. 실행 시에 크기를 바꿀 수 없습니다.
SMA(Static Memory Allocation)
정적 메모리, data영역, stack영역 사용
Data: 프로그램 시작과 동시에 할당된 영역이 잡히고 끝나면 OS에 반환
Stack: 함수 시작과 동시에 할당된 영역이 잡히고 끝나면 OS에 반환
DMA(Dynamic Memory Allocation)
동적 메모리, heap영역을 사용
stack에서 pointer변수를 할당하고, 그 pointer가 가리키는 heap영역의 임의의 공간부터 원하는 크기만큼 할당해 사용
'프로그래밍언어' 카테고리의 다른 글
[프로그래밍언어] 프로그래밍언어의 역사 (0) | 2020.06.20 |
---|---|
[프로그래밍언어] Data Types_Union Types, Pointer and Reference Types, Type Checking, Strong Typing (0) | 2020.06.20 |
[프로그래밍언어] Data Types_Primitive, Character String, Enumeration, Array Types (0) | 2020.06.19 |
[프로그래밍언어] Syntax and Semantics (0) | 2020.06.19 |
[프로그래밍언어]Subprograms (1) | 2020.06.19 |