bonjour,
j'avais ce message lorsque j'additionnais deux matrice "pointer being freed was not allocated" mais après quelque recherche j'ai lu qu'il fallait une méthode de copie et une pour l'operateur = ce qui avait résolu mon problème.
Mais maintenant lorsque je multiplie deux matrices de tailles inegale une (3,3) par une (3,4) par exemple le calcul s'effectue bien mais j'obtient le message d'erreur "pointer being freed was not allocated"
le plus étonnant est que lors que je multiplie deux matrice carré de taille n cela marche très bien et je n'ai pas de message d'erreur
si vous avez une idée d'où vient le problème je serai heureux de le savoir
voilà mon code de multiplication
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 matrice matrice::operator*(const matrice &mat) { int i, j, k; matrice nouvellemat(m_ligne , mat.m_colonne); //algo de multiplication de matrice qui marche if(m_colonne == mat.m_ligne) { for (i = 0 ; i < m_ligne ; i++) { for (j = 0 ; j < mat.m_colonne ; j++) { for (k = 0 ; k < m_colonne ; k++) { nouvellemat.m_tableau[i][j] = m_tableau[i][k] * mat.m_tableau[k][j] + nouvellemat.m_tableau[i][j]; } } } } else cerr << "impossible de multiplier les matrices"<< endl; return nouvellemat; }
Partager