Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++는 가변 길이 배열(VLA)을 지원하나요?

C++는 가변 길이 배열(VLA)을 지원하지 않습니다

C++ 표준은 가변 길이 배열(Variable Length Array, VLA)을 공식적으로 지원하지 않습니다. C++11 표준에서도 배열의 크기는 반드시 상수 표현식(constant-expression)으로 지정해야 한다고 명시하고 있습니다.

즉, 배열의 크기를 런타임에 결정되는 변수 값으로 지정하면 컴파일 오류가 발생합니다.

작동하지 않는 코드 예제

void displayArray(int n) {
   int arr[n];  // 컴파일 오류 발생
   // ......  
}
int main() {
   displayArray(7);
}

위 코드에서 int arr[n]처럼 변수 n을 배열 크기로 사용하면 g++, clang++ 등 대부분의 C++ 컴파일러에서 오류를 반환합니다. 이는 C99 이후 가변 길이 배열을 허용하는 C 언어와의 중요한 차이점 중 하나입니다.

가변 길이 배열의 대안

런타임에 크기가 결정되는 배열이 필요하다면 다음과 같은 방법을 사용하는 것이 좋습니다.

  • std::vector: 크기를 동적으로 조절할 수 있는 표준 컨테이너로, 가장 권장되는 방식입니다.
  • 동적 할당(new / delete[]): new 연산자로 힙 메모리에 배열을 할당하고, 사용 후 반드시 delete[]로 해제해야 합니다.
  • std::unique_ptr: 동적으로 할당된 배열을 스마트 포인터로 관리하면 메모리 누수를 방지할 수 있습니다.

결론적으로, C++에서 가변 길이 배열은 표준 기능이 아니므로 std::vector와 같은 컨테이너를 활용하는 것이 안전하고 바람직한 접근 방식입니다.