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;
}