본문 바로가기

IT정보

[IT 기초] 정적 할당, 동적할당

정적 할당은 스택에 쌓이는 변수와 같은 것들입니다. 예를 들어서 int x=10;이라고 해봅시다. 이는 스택에 그대로 저장이 되고 나중에 x를 사용하면 항상 10이라는 값을 내보내줍니다. 하지만 이후 x=1;이라고 해주면 x를 사용하면 항상 1이라는 값을 내보내줍니다. 이는 10이라는 것과 1이라는 것 중 늦게 들어간 것을 반환하는 스택의 특성입니다. 스택은 한번 할당하면 그렇게만 쓰입니다.

 

 동적 할당은 힙에 쌓이는 변수와 같은 것들입니다. 대신 메모리를 동적으로 사용할 수 있죠. 예를 들어 int* x; 라고 해봅시다. 이는 정적 할당을 통해 int 포인터를 할당한 것입니다. 이후 이 포인터를 동적 메모리인 힙을 가르켜 사용할 수 있습니다. 이때 사용하는 것이 malloc입니다.

 

 int* x; x=(int*)malloc(sizeof(int)); 라고 해주면 x라는 포인터는 int 크기를 가지는 메모리를 가르킵니다. 그럼 이제 x는 정수형은 무궁하게 담을 수 있습니다. 하지만 free(x)를 해주면 더 이상 사용할 수 없습니다.

 

'IT정보' 카테고리의 다른 글

[IT 기초] 서버  (0) 2020.05.13
[IT 기초] 가비지컬렉터  (0) 2020.05.13
[IT 기초] 메모리 영역  (0) 2020.05.13
[C언어] 버블 정렬  (0) 2020.05.12
[C언어] 순차 정렬  (0) 2020.05.12