C++基于非常量变量声明一个数组?

use*_*037 5 c++ arrays dynamic

void method(string a) {
  int n = a.size();
  int array[n];
}
Run Code Online (Sandbox Code Playgroud)

上面的代码可以使用gcc正确编译.数组的大小如何来自非常量变量?编译器是否自动将其转换int array[n]int* array = new int[n]

Mik*_*our 6

数组的大小如何来自非常量变量?

目前,因为该编译器具有非标准扩展,允许您在C++程序中使用C的可变长度数组.

编译器是否自动将其转换int array[n]int* array = new int[n]

这是一个实现细节.我相信GCC会把它放在堆栈上,就像普通的自动变量一样.如果堆栈的大小太大,它可能会也可能不会使用动态分配; 我不知道自己.