C++ Variable-Length Array (VLA)

전민수·2022년 11월 3일

Variable-Length Array (VLA) 가변길이배열

cin >> n;
int arr[n]

arr를 이런 방식으로 정의하여 쓰곤 한다.

arr는 컴파일 시점에 크기가 정해져야 한다고 알고 있는데,
이렇게 되면 런타임 도중 n을 입력 받아 arr의 크기가 정해지는 것 아닌가?

이 방법은 정적할당이 아닌 동적할당 방법이다.
하지만 메모리는 힙이 아닌 스택에 할당된다.

동적할당은 런타임 중, 메모리가 힙에 할당된다고 정의했는데...싶을 것이다.

이 방법은 C++ 표준이 아니다. 그래서 컴파일러에 따라 지원여부가 다르다.
GCC나 Clang에서는 VLA를 지원하지만 MSVC에서는 VLA를 지원하지 않는다.

정리

new/delete 문법에 비해 간단하지만, 컴파일러에 따라 지원여부가 다른 비표준이니 지양할 필요가 있다.

profile
Learning Mate

0개의 댓글