有什么区别new char[n]和new (char[n])?
我在生成的代码中有第二种情况,g ++(4.8.0)给了我
ISO C++ does not support variable-length array types [-Wvla]
Run Code Online (Sandbox Code Playgroud)
这让我想到这两者是否相同.
new char[n]意思是"分配n类型的对象char.new (char[n])意味着"分配1个类型的对象array of n chars"?delete或删除第二个delete[]?代码由第三方软件生成(并由软件的其他部分使用),因此我不能只是"使用向量".
这是最小的例子:
int main (void)
{
int n(10);
int *arr = new (int[n]); // removing parentheses fixes warning
*arr = 0; // no "unused variable" warning
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我尝试了这段代码:
auto p = new int (*)[10];
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:
test.cc:8:21: error: expected expression
auto p = new int (*)[10];
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)
我改变了我的代码:
typedef int array[10];
auto p = new array *;
Run Code Online (Sandbox Code Playgroud)
然后一切都很顺利。为什么是这样?