У меня возникли проблемы с пониманием того, почему мой метод удаления неверен.освобождение динамического массива строк 2d в C++
Для моего создания матрицы У меня есть:
43 matrix = new string*[row];
44 for(int i = 0; i < row; i++) {
45 matrix[i] = new string[col];
46 }
47 for(int i = 0; i < row; i++) {
48 for(int j = 0; j < col; j++) {
49 matrix[i][j] = array[i][j];
50 //cout << matrix[i][j] << ' ';
51 }
52 cout << endl;
53 }
Тогда в моем деструктора у меня есть:
15 for(int i = 0; i < row; i++) {
16 delete matrix[i];
17 }
18 delete matrix;
Моя программа аварий на первой записи удаления
Попробуйте 'удалить [] матрица [я] и' удалить [] matrix' – IdeaHat
Примечание: ' delete [] 'what you' new [] 'и' delete', что вы 'new'. Тем не менее, я подозреваю, что ваш содержащий объект (из которого 'matrix' является членом) неправильно реализует« Правило трех ». Если у вас все еще есть эта проблема после исправления синтаксиса array-delete (и я думаю, что вы это сделаете), опубликуйте определение класса, которое содержит 'matrix'. – WhozCraig
Используйте std :: vector. Нет никакой веской причины не делать этого. –