1. Heap 이란?
- Heap은 개발자에 의해 동적으로 할당되는 메모리 영역이다.
- 파이썬과 같은 최신언어는 동적할당을 요구하지 않는다.
- 하지만, 컴퓨터의 내부 요소까지 모두 조절할 수 있는 C언어의 경우 동적할당은 필수적이다.
a) 어떻게 동적할당을 할까?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *data; // 포인터 변수(주소값을 갖고 있다)
data = (int *) malloc(sizeof(int));
// C언어에서 int는 32bit = 4bytes의 크기를 갖는다.
// data라는 변수는 heap의 메모리 공간에 올라가게 된다.
*data = 1;// 포인터 변수의 주소에(= 위치에) 1을 넣는다.
printf("%d\n", *data);
return 0;
}
- malloc() 이라는 함수는 C언어에서 동적 메모리 할당을 하는 대표적인 함수다.
- malloc()은 데이터 타입의 사이즈를 매개변수로 받는다.
- 참고로 동적할당의 반대로 동적할당을 해제하는 free(동적할당된 변수) 함수가 있다.
- 결과적으로 Heap 메모리에는 32비트의 공간이 할당되는 것이고, 해당 메모리 공간을 찾을 수 있는 주소값이 부여되는 것이다.
b) 컴파일 과정을 그림으로 알아보자
'컴퓨터공학기초 개념 > 운영체제' 카테고리의 다른 글
17. 프로세스 구조 - 컨텍스트 스위칭(context switching) (0) | 2021.04.20 |
---|---|
16. 프로세스 구조(4) - BSS와 Data (0) | 2021.04.15 |
14. 프로세스 구조(2) - Stack (0) | 2021.04.13 |
13. 프로세스 구조(1) (0) | 2021.04.09 |
12. 인터럽트 동작방식 (0) | 2021.04.08 |
댓글