Code(Text)
Data
- 전역변수
- static 변수
- 프로그램 시작 시 메모리 할당, 프로그램 종료 시 해제
Stack
- 지역변수, 매개변수
- 재귀함수를 설명할 때 스택에 저장되는 내용이 한 가지 더 있었다. 무엇이었을까?
- 재귀함수를 사용할 때 함수 호출이 너무 깊어지면 Stack Memory가 가득차게 되는데 이걸 Stack Overflow라고 한다.
Heap
- 동적 메모리 할당
- 프로그래머에 의해 필요한 크기만큼 할당하여 사용하고 반환되어지는 곳
동적 메모리 할당
메모리 할당 & 해제
void* malloc(size_t size);
void free(void* ptr);
int main()
{
void* ptr1 = malloc(4);
void* ptr2 = malloc(8);
*ptr1 = 4; // ?
*ptr2 = 4.4; // ?
free(ptr1);
free(ptr2);
return 0;
}
포인터 형 변환
- 주소값은 64비트 운영체제 기준 8 byte, 32비트 운영체제 기준 4 byte