Первое замечание: почти никогда не бывает веской причины использовать форму массива new или delete для начала - вместо этого используйте std :: vector (или какой-либо другой контейнер).
Во-вторых: в темные времена C ++ вам приходилось указывать размер удаляемого массива, поэтому, если вы использовали x = new T[N]
, соответствующее удаление было delete [N] x
. Требование явного указания размера было удалено long назад, но некоторые компиляторы (особенно те, которые заботятся о обратной совместимости с древним кодом) все еще позволяют это.
Если вам не требуется совместимость с древним компилятором (которому около 20 лет), вы не должны его использовать. Опять же, если вам не нужно оставаться совместимым со столь старым компилятором, который не поддерживает никаких стандартных контейнеров, вы не должны использовать форму массива new или delete в первую очередь. Просто остановись!