Search
Duplicate
⁉️

[토막글] 정적 할당에 대한 오해

간단소개
정적 할당? 그게 뭔데?
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
C
C++
Scrap
태그
동적할당
9 more properties

VLA는 뭘까?

이름이 동적 할당이므로 런타임에 크기를 정하는 것, 또는 런타임에 할당받는 것으로 생각하기 쉽다.
C의 VLA(Variable Length Array) 역시 런타임에 크기를 정할 수 있지만, VLA는 정적 할당이다.

그런 거 없다

managed/unmanaged 언어라는 말이 그런 것처럼,
정적 할당이라는 말 역시 널리 쓰이고는 있지만 잘 정의된 용어가 아니다.

C의 3가지 메모리 할당

C의 할당은 크게 세가지가 있다.
auto
흔히 말하는 정적 할당. 런타임에, 주로 스택에 할당
보통 크기는 컴파일 타임에 결정되긴 함 (당연히 VLA는 예외)
static, register 등 스토리지 클래스를 지정하지 않으면 자동으로 auto
static
진정한 의미의 정적 할당이지만 그 누구도 이것을 정적 할당이라고 하지 않음
컴파일 타임에 크기가 정해지며 런타임에 할당받지 않음
... 그리고 동적 할당
malloc, calloc, realloc 등을 호출해서 할당받는 것
스택이 아닌 힙에 할당됨
* 그 외에도 registerthread_local같은 것도 있다