728x90
반응형
SMALL
메모리 구조에 대한 정리
SMALL
메모리 구조
프로그램의 실행을 위해 제공되는 메모리 공간
메인 메모리(RAM)에 할당
1. 코드(code) 영역
2. 데이터(data) 영역
3. 스택(stack) 영역
4. 힙(heap) 영역
코드(code) 영역
실행할 프로그램의 코드가 저장되는 영역
데이터(data) 영역
전역변수와 정적(static) 변수가 저장되는 영역
*정적변수 : 프로그램이 종료되기 전까지 메모리가 소멸되지 않는 변수
스택(stack) 영역
함수 호출 정보 저장(지역변수, 매개변수)
- 잠깐 사용하고 삭제하는 데이터 저장용
- 정의된 블록을 벗어날때 소멸됨
- 함수 호출 위치 저장
- 힙 보다 속도가 빠름
- 크기에 제한이 있어 매우 큰 데이터는 저장할 수 없음
힙(heap) 영역
동적할당 되는 변수 저장
- 직접 할당과 해제 필요(가비지 컬렉터 있을 경우 제외)
- 스택보다 큰 메모리를 할당받기 위해 사용
- 스택보다 속도가 느림
스택 오버 플로우(Stack Overflow)
Stack 영역의 메모리가 지정된 범위를 넘어갈 때 발생
- 너무 큰 지역 변수를 선언할 때
- 함수를 재귀적으로 무한정 호출할 때(함수가 종료되지 않은 채 새로운 함수를 호출하므로 스택에 메모리가 계속적으로 저장)
728x90
반응형
LIST
'OS > All' 카테고리의 다른 글
[OS] 뮤텍스(Mutex) & 세마포어(Semaphore) (0) | 2023.09.16 |
---|---|
[OS] 빅 엔디안 & 리틀 엔디안 (0) | 2023.09.05 |
[ETC] CRLF / LF /CR (0) | 2023.07.21 |
[OS] 프로세스(Process)/스레드(Thread) (0) | 2023.06.25 |