Is allocating a dynamic array without specifying size well formed code?
- by Als
The following simple program snippet gives compilation errorswith gcc-4.3.4.
Program:
int main()
{
char *ptr = new char[10];
char *ptr1 = new char[];
return 0;
}
Compilation errors:
prog.cpp: In function ‘int main()’:
prog.cpp:4: error: expected primary-expression before ‘]’ token
prog.cpp:3: warning: unused variable ‘ptr’
prog.cpp:4: warning: unused variable ‘ptr1’
But the same compiles cleanly with MSVC without any diagnostic message.
So my question is:
Does the Standard allow an new [] to be called without specifying the size? Or this a bug in MSVC?
Can someone provide a reference from the standard which will conclusively say that the above code example is ill-formed or well-formed?
I have had a look at:
5.3.4 New [expr.new] &
18.4.1.2 Array forms [lib.new.delete.array]
but couldnt find any conclusive evidence about the behavior.