Bonjour à tous !
Je suis étudiant en mathématiques et novice en C++. J'ai pris connaissance, sur un site d'auto formation bien connu, de l'existence de la "fuite de mémoire", et voici mon tourment:
Je crée une classe "matrice" (dans le cadre de mes cours, construction de la classe imposée) et je souhaite faire une fonction qui ajoute une ligne à la matrice, à la fin.
Voici les champs privés de la classe matrice:
(j'ai créé une classe vecteur aussi, je sais STL fonctionne très bien mais pas le choix... Cette classe marche très bien)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int size1; int size2; vecteur* mrows;
Voici la fonction désirée :
Est-ce qu'il y a ici une fuite de mémoire ? Je pense que oui parce que je ne supprime pas l'ancienne valeur du pointeur mrows ainsi la case mémoire utilisée est toujours occupée. Est-ce vrai ce que je dis ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 matrice matrice :: ajout_ligne() { vecteur zero(size2); vecteur* stock; stock = new vecteur [size1]; for (int i=0; i<size1; i++) stock[i] = mrows[i]; size1 = size1 + 1; mrows = new vecteur [size1]; for(int i=0; i<size1-1; i++) mrows[i] = stock[i]; mrows[size1-1] = zero; return *this; }
Si oui, rajouter la ligne delete[] mrows; juste avant mrows = new vecteur [size1]; réglerait le problème ?
Pour être franc je ne suis pas rassuré et j'aimerai que cela s'éclaircisse pour moi.
Merci beaucoup d'avance de prêter attention à ma demande !!
Partager