Je me demandais si l'un d'entre vous pouvait confirmer que je supprimais correctement de la mémoire allouée dynamiquement.C++ Effacer correctement la mémoire allouée dynamiquement
Le TileWrapper ci-dessous est initialisé comme un tableau 2D de pointeurs:
private:
TileWrapper*** mLayout;
J'ai simplifié son initialisation pour vous montrer les parties importantes:
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();
}
}
}
La partie que j'ai besoin confirmé est la destruction, montrée ci-dessous:
~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
}
Je suis particulièrement préoccupé par la suppression s qui ont // CONFIRMER CETTE suite en raison des caractères []. Mon code est-il étanche à la mémoire? Merci.
Oui, il semble être étanche à la mémoire. Vous pouvez le vérifier en utilisant des outils de vérification de la mémoire comme Valgrind ou DrMemory – Hugal31
'std :: vector'. Vérifiez-le. Il a deux décennies maintenant. – molbdnilo
@molbdnilo Je suis conscient, je ne voulais pas l'utiliser car je n'ai pas besoin des fonctions qui vont avec. – Anthroyd