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]?
数组的大小如何来自非常量变量?
目前,因为该编译器具有非标准扩展,允许您在C++程序中使用C的可变长度数组.
编译器是否自动将其转换
int array[n]为int* array = new int[n]?
这是一个实现细节.我相信GCC会把它放在堆栈上,就像普通的自动变量一样.如果堆栈的大小太大,它可能会也可能不会使用动态分配; 我不知道自己.