정적 할당은 스택에 쌓이는 변수와 같은 것들입니다. 예를 들어서 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 |