Alo*_*ave 10 c++ new-operator language-lawyer
以下简单的程序片段给出了编译错误gcc-4.3.4.
程序:
int main()
{
char *ptr = new char[10];
char *ptr1 = new char[];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译错误:
prog.cpp:在函数'int main()'中:
prog.cpp:4:错误:在']'之前预期的primary-expression
prog.cpp:3:警告:未使用的变量'
ptr'prog.cpp:4:warning :未使用的变量'ptr1'
但是同样的编译与MSVC完全没有任何诊断消息.
所以我的问题是:
标准是否允许在new []不指定的情况下调用size?或者这是MSVC中的一个错误?
有人可以提供标准的参考,最终会说上面的代码示例是格式错误还是格式正确?
我看过:
5.3.4 New [expr.new]&
18.4.1.2数组形式[lib.new.delete.array]
但无法找到有关该行为的任何确凿证据.
编辑:
添加Language Lawyer标签.
我期待观察到的行为的答案,无论它是否有用,我完全清楚它没有用处,也没有推荐.