C++中的动态内存分配需要new运算符new?

new*_*mer 0 c++ memory dynamic new-operator

int d;
cin >> d;
int asdf[d];
Run Code Online (Sandbox Code Playgroud)

这被认为是动态内存分配吗?根据http://www.cplusplus.com/doc/tutorial/dynamic/,似乎我甚至不能编译它,因为不使用new运算符的数组只能声明为常量,也许我读错了.(我正在使用CodeBlocks和GNU CCC编译器)

它和之间的区别是什么?

int d;
int *asdf;
cin >> d;
asdf = new int[d];
Run Code Online (Sandbox Code Playgroud)

在删除之前,使用新生命创建的数组是唯一的区别,而第一个数组在离开范围后会立即释放吗?

Ker*_* SB 9

int x[n];是一个可变长度数组(VLA),它具有自动存储持续时间(即"在堆栈上").它在C89或C++ 98/03中无效,但它是在C99中引入的,并且通常作为扩展提供,例如在GCC中.

在具有非标准alloca()功能的某些平台上也可以模仿该功能,该功能在VLA变得普遍之前使用.