> -- Валерий Лаптев писал(а):
> ...Недавно в одной лабе на С++ пацан сделал массив нулевой длины.С++ это теоретически разрешает.В лабе требовалось добавлять по 1 элементу в массив.Вот он создает массив нулевой длины, передает его в качестве параметра в функцию.Функция делает новый массив размером +1, переписывает туда переданный массив и последним размещает новый элемент.Адрес нового массива возвращается из функции.Прога не работала. Я смотрел адреса.С++ нулевым массивам присваивал адреса, которые вызывают access violation....
Скорее, C++ автоматически не выделяет память и не присваивает адреса нулевым массивам. В противном случае теряется смысл как таковой их применения. Если необходимо выделение памяти, то таково осуществляется для внешних по отношению к массиву объектов (явные указатели на массив или структуру, его содержащую, и т.п.). См., например (плюс там комментарии к ответу):
https://ru.stackoverflow.com/questions/297649/%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2%D1%8B-%D0%BD%D1%83%D0%BB%D0%B5%D0%B2%D0%BE%D0%B9-%D0%B4%D0%BB%D0%B8%D0%BD%D1%8B#