下面的簡單程序片段給出編譯錯誤gcc-4.3.4
。正在分配一個動態數組而不指定大小格式良好的代碼?
計劃:
int main()
{
char *ptr = new char[10];
char *ptr1 = new char[];
return 0;
}
編譯錯誤:
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’
但同樣與MSVC完全編譯沒有任何診斷信息。
所以我的問題是:
是否標準允許在不指定size
的new []
被稱爲?或者這是MSVC中的錯誤?
有人可以提供一個標準的參考,它將確鑿地說,上面的代碼示例是不合格或格式良好?
我有一個看看:
5.3.4新[expr.new] &
18.4.1.2數組形式[lib.new.delete.array]
但無法找到任何有關該行爲的確鑿證據。
編輯:
添加Language Lawyer
標籤。
我期待着觀察到的行爲的答案,無論它是否有用,我完全意識到它沒有用,也不推薦。
如果這是合法的,我沒有看到它的重點... – Mehrdad 2012-03-20 05:27:39
我不明白它是如何可以形成良好的代碼?編譯器要做什麼,猜測大小?這似乎相當困難(如果不是不可能的話)。 – Corbin 2012-03-20 05:27:45
+1,有趣,等待一個很好的答案。 – ApprenticeHacker 2012-03-20 05:30:08