하지만, 컴퓨터의 내부 요소까지 모두 조절할 수 있는 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비트의 공간이 할당되는 것이고, 해당 메모리 공간을 찾을 수 있는 주소값이 부여되는 것이다.
댓글