У меня есть 2d массив указателей объектов, и я пытаюсь написать deallocator для объекта, который удаляет указатели в массиве, а затем удаляет сам массив. Я определяю массив в заголовке объекта уничтожаются как такНарушение прав доступа при удалении 2d-массива
space* board[6][6];
выделяют космические объекты в массиве таким образом:
board[0][0]= new space(1,0);
board[0][1] = new space(1, 0);
board[0][2] = new space(1, 0);
Моего текущий деструктор, как это
for (int i = 0; i < 6; ++i)
{
for (int j = 0; j < 6; ++j){
delete board[i][j];
}
delete[] board[i];
}
delete[] board;
Когда я это сделаю, я получаю это сообщение: Необработанное исключение в 0x5080A9E8 (msvcr120d.dll) в Blitz.exe: 0xC0000005: место чтения нарушения доступа 0xFEEEFEE2.
Я не совсем уверен, что делать, я пробовал оглядеться, и, похоже, мой деструктор должен быть в порядке. Я знаю, если бы у меня было достойное образование в области программирования, я бы использовал что-то лучше, например, вектор или что-то еще. Я загрузил pdf-файл о том, как люди на самом деле используют C++ в наши дни, и я, вероятно, скоро перейду к этому, но я просто просто позабочусь об этой утечке памяти и продвигаюсь дальше.
Вам действительно нужно использовать динамически выделенные объекты? – juanchopanza