Ошибка при удалении двумерного массива

подскажите пожалуйста: почему при удалении двумерного дин.массива программа выдает ошибку.

   float **arr= new float*[count];
   for (int i{};i<2;i++)
      {
     arr[i]=new float[i];
       }

   for (int i{};i<count;i++)
    {
     delete[] arr[i];
    }
     delete[] arr;

Ответы (2 шт):

Автор решения: Harry

Пусть столбцов - COLS, строк - ROWS.

float ** arr = new float[ROWS];
for(int i = 0; i < ROWS; ++i) arr[i] = new float[COLS];

....

for(int i = 0; i < ROWS; ++i) delete[] arr[i];
delete[] arr;
→ Ссылка
Автор решения: Ayrat Arifullin
for (int i{}; i<2; i++) {
  arr[i] = new float[i];
}

Судя по всему вы выделяете не матрицу, а "треугольник". Причем у вас первая строка - 0 байт. Вы ничего там не аллоцировали. Я даже не представляю какой эффект это дает при delete. Вы получаете какое-то исключение? К тому же вы не итерируете до count а до 2, выходит, что вы аллоцировали две строчки (одну нулевую), а потом удаляете все count

→ Ссылка