void method(string a) {
int n = a.size();
int array[n];
}
上面的代码可以使用 gcc 正确编译。数组的大小如何来自非常量变量?编译器会自动翻译int array[n]
成int* array = new int[n]
吗?
数组的大小如何来自非常量变量?
目前,因为该编译器具有非标准扩展,允许您在 C++ 程序中使用 C 的可变长度数组。
编译器会自动翻译
int array[n]
成int* array = new int[n]
吗?
这是一个实现细节。我相信 GCC 将它放在堆栈上,就像普通的自动变量一样。如果堆栈的大小太大,它可能会也可能不会使用动态分配;我不认识自己。
动态分配。关键字将new
使用指针和一些分配来执行此操作。
int * ptr;
int n = a.size();
ptr = new int[n];
据此,编译器允许在 C++ 中使用此表达式,直至 C90/99 。