Следующий простой фрагмент программы дает ошибки компиляции с gcc-4.3.4
.
Программа:
int main()
{
char *ptr = new char[10];
char *ptr1 = new char[];
return 0;
}
Ошибки компиляции:
prog.cpp: В функции '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]
но не смог найти никаких убедительных доказательств в отношении поведения.
EDIT:
Добавление тега Language Lawyer
.
Я ожидаю ответа на наблюдаемое поведение, независимо от того, полезен он или нет, я полностью осознаю, что это не полезно и не рекомендуется.