Следующий простой фрагмент программы выдает ошибки компиляции с 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: ошибка: ожидаемое первичное выражение перед маркером'] '
prog.cpp: 3: предупреждение: неиспользуемая переменная' ptr '
prog.cpp: 4: предупреждение: неиспользуемая переменная 'ptr1'
Но то же самое компилируется чисто с MSVC без каких-либо диагностических сообщений.
Итак, мой вопрос:
Разрешает ли стандарт вызывать new []
без указания size
?Или это ошибка в MSVC?
Может ли кто-нибудь предоставить ссылку из стандарта, которая убедительно скажет, что приведенный выше пример кода неверен или правильно сформирован?
Я посмотрел на:
5.3.4 Новый [expr.new] &
18.4.1.2 Формы массива [lib.new.delete.array]
, но не смог найти каких-либо убедительных доказательств поведения.
РЕДАКТИРОВАТЬ:
Добавление Language Lawyer
tag.
Я ожидаю ответа для наблюдаемого поведения, независимо от того, полезно оно или нет, я полностью осознаю, что это не полезно и не рекомендуется.