Мне было интересно, удалось ли одному из вас подтвердить, что я правильно удаляю некоторую динамически выделенную память.C++ Правильное удаление динамически распределенной памяти
TileWrapper ниже инициализируется как 2D массив указателей:
private:
TileWrapper*** mLayout;
я упростил его инициализации, чтобы показать вам важные части:
void generateLayout() {
mLayout = new TileWrapper**[mRows];
for(int i = 0; i < mRows; i++) {
mLayout[i] = new TileWrapper*[mColumns];
}
for(int i = 0; i < mRows; i++) {
for(int j = 0; j < mColumns; j++) {
mLayout[i][j] = new TileWrapper();
}
}
}
Та часть, которая мне нужно подтвержены разрушение, показанное ниже:
~Destructor() {
for (int i = 0; i < mRows; i++) {
for (int j = 0; j < mColumns; j++) {
delete mLayout[i][j];
}
delete[] mLayout[i]; // CONFIRM THIS
}
delete[] mLayout; // CONFIRM THIS
}
Я особенно обеспокоен удалением s, которые имеют // ПОДТВЕРДИТЬ ЭТО впоследствии из-за символов []. Является ли мой код памяти утечки доказательства? Благодарю.
Да, это похоже на доказательство утечки памяти. Вы можете проверить это, используя инструменты проверки памяти, такие как Valgrind или DrMemory – Hugal31
'std :: vector'. Проверьте это. Сейчас уже два десятилетия. – molbdnilo
@molbdnilo Я знаю, я не хотел использовать его, так как мне не нужны какие-либо функции, которые приходят с ним. – Anthroyd