Ошибка при удалении двумерного массива
подскажите пожалуйста: почему при удалении двумерного дин.массива программа выдает ошибку.
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