메모리란
질문!
128MB이면 int형 몇개까지 선언가능한가요?
int형 = 4Byte
1KB = 1024Byte
1MB = 1024KB
128MB = 128 X 1024KB = 128 X 1024 X 1024B
- int의 크기로 나누어주면
128 X 1024 X 1024Byte / 4Byte = 33554432
프로그램 실행 시 운영체제에 의하여 마련되는 메모리의 구조는 다음과 같이 크게 4개의 영역으로 구분된다.
- 코드 영역 (CodeArea)
- 데이터 영역 (DataArea)
- 힙 영역 (HeapArea)
- 스택 영역 (StackArea)
1. 코드영역 (CodeArea)
코드 영역은 이름 그대로 프로그램의 코드가 저장되는 영역.
CPU는 코드영역에 저장된 명령문들을 하나씩 가져가서 실행.
2. 데이터 영역 (DataArea)
데이터 영역에는 전역변수, static으로 선언된 변수들이 할당되는 공간이다.
이 영역에 할당되는 변수들은 프로그램 시작과 동시에 메모리 공간에 할당.
(전처리기의 개념. 컴파일과 동시에 메모리에 공간을 확보)
프로그램 종료시 소멸된다.
3. 힙 영역 (HeapArea)
프로그래머가 원하는 시점에 변수를 할당, 소멸하도록 지원하는 영역.
C++은 new, C는 malloc과 같이 동적할당으로 메모리 할당을 할때 할당되는 영역이다.
이 공간의 메모리들은 자동으로 소멸되지 않는다.
직접 메모리의 할당과 해체를 해줘야 하는 공간!
4. 스택 영역 (StackArea)
스택 영역은 지역변수와 매개변수들이 임시적으로 할당되는 공간이다.
이 영역에 할당되는 변수들은 함수가 실행되었을 때 할당되고, 함수의 종료시 메모리가 해제된다.