У меня есть следующий код:
int **arr = new int*[5];
for(int i = 0; i < 5; ++i)
arr[i] = new int[];
for(int i = 0; i < 5; ++i)
delete [] arr[i];
delete [] arr;
Теперь он компилируется и запускается успешно, однако, если я удаляю размер массива '5' из первой строки, код компилируется, но вылетает с ошибкой во время выполненияпоследняя строкаУ меня есть следующие вопросы, на которые мне не удалось найти ответы в книге Страуструпа на C ++, в Интернете и т. Д.
- Почему код падает в указанном случае?(Я предполагаю, что delete [] не может найти размер массива, который нужно удалить, и падает.)
- Если не разрешено выделять многомерные массивы без указания размера, почему такие ошибки не перехватываются компилятором при компиляциивремя?