응애맘마조
지역변수와 동적할당을 각각 스택과 힙에 할당하는 이유 본문
지역변수와 동적할당은 밑에 걸어둔 링크에서 확인해 주시면 됩니다.
지역변수 : https://keisukeaso.tistory.com/119
동적할당 : https://keisukeaso.tistory.com/121
앞의 게시글대로 변수에 대해서는 작성을 해봤습니다. 하지만 변수마다 메모리에 할당하는 위치가 다르게 되어있습니다. 특히 이번에는 지역변수와 동적 할당의 메모리 위치가 왜 다른지 설명해 보겠습니다.
먼저 스택과 힙에 대해서 설명하겠습니다.
스택은 컴파일하면서 메모리의 크기가 결정됩니다. 그렇기 때문에 동적으로 할당과 해제가 불가능합니다. 함수의 실행과 종료에 따라 할당이 되고 해제가 됩니다. 명확하게 정해져 있는 메모리 공간만큼 사용합니다.
힙은 프로그래머가 할당하고 해제를 하기 때문에 런타임 중에 메모리의 크기가 결정됩니다. 스택처럼 정해져 있는 메모리 공간을 사용하지 않고 런타임 중에 필요한 만큼 할당해서 사용하게 됩니다.
이러한 차이점 때문에 지역변수는 잠깐 사용하고 버려지기 때문에 스택처럼 메모리 관리가 따로 필요하지 않고 CPU가 관리하기 때문에 상당히 속도가 빠릅니다.
그리고 힙은 데이터나 변수의 크기를 알 수 없거나 너무 큰 경우에 사용을 하기 때문에 컴파일하면서 할당을 할 수가 없습니다. 그래서 메모리 할당에 제한이 따로 없습니다.
읽어주셔서 감사합니다.
'공부 > 개인' 카테고리의 다른 글
extern (0) | 2023.03.29 |
---|---|
static (0) | 2023.03.28 |
메모리 구조 (0) | 2023.03.23 |
동적할당(Dynamic Allocation) (0) | 2023.03.08 |
전역변수(Global Variable) (0) | 2023.03.07 |