본문 바로가기
컴퓨터공학기초 개념/운영체제

15. 프로세스 구조(3) - Heap

by devraphy 2021. 4. 14.

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) 컴파일 과정을 그림으로 알아보자

 

댓글