没有new运算符的动态数组?

Dav*_*ave 2 c++ arrays memory-management

从什么时候开始这种语法有效?(使用g ++ 4.6.3工作)我应该搜索什么来查找有关此内容的更多信息(我习惯于新建/删除)?

#include <iostream>

int main(){
    size_t sz;
    std::cout<<"number?\n";
    std::cin>>sz;

    // This line
    float dynamic_arr[sz];

     //output the (uninitialized) value just to use the array.
     std::cout<<dynamic_arr[0]<<std::endl;
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 8

变量长度数组(VLA)不是标准C++,它们是编译器扩展.如果您希望代码可移植,则不应使用它.

如果使用-Wvla -Werror标志进行编译,或者-Werror=vla,您的代码将产生错误

错误:使用可变长度数组'dynamic_arr'[-Werror = vla]