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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
int size1;
int size2;
vecteur* mrows;
(j'ai créé une classe vecteur aussi, je sais STL fonctionne très bien mais pas le choix... Cette classe marche très bien)

Voici la fonction désirée :
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;
}
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 ?
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 !!