Problème de stockage

Signaler
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004
-
bonjour à tous !
voilà mon problème, je travaille sur des Matrices . Chaque classe Matrice est composé de :
float ** Mat;
int Ligne;
int Colonne;

Lors de Calcul sur les matrices par exemple, multiplication
Matrice E,D,B;
E=D.Matricemul(B,C1,C1,C1,L1);
quand je regarde l exécution de la fonction tout se passe bien et tout s enregistre bien jusqu au return.
Mais une fois de retour sur la fonction appellante des données sont perdus. J ai bien E.Ligne et E.Colonne correct mais je réussis plus a acceder à mon tableau, le contenu est vide.
Quelqu un aurait une idée, merci .....

3 réponses

Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
Tu as vérifiés les domaines de valabilités de tes variables?
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004

merci mais les variables sont correctes,j ai constaté qu à la fin de ma fonction, je fais appel à mon destructeur mais aussi à mon constructeur par recopie (là je vois pas trop pourquoi dans le return) et parfois il me semble que les deux se bouffent l un l autre. Je sais pas si c possible .

Matrice::Matrice(const Matrice& o)
{ int i,j;
Ligne=o.Ligne;
Colonne=o.Colonne;
Mat=(float **) malloc((Ligne)*sizeof(float *));
for(i=0;i<Ligne;i++)
Mat[i]=(float*) malloc(Colonne*sizeof(float));

for (i=0;i<Ligne;i++)
{for(j=0;j<Colonne;j++)
{Mat[i][j]=o.Mat[i][j];
}
}
}

et

Matrice::~Matrice()
{
int i,L1;
L1=Ligne;
if (Ligne>0)
{for (i=0;i<L1;i++)
{
free(*(Mat+i));
}
free(Mat);
Ligne=0;Colonne=0;
}

}
mais merci pour l idée car c ca qui me manqu pour l instant
Messages postés
13
Date d'inscription
samedi 29 novembre 2003
Statut
Membre
Dernière intervention
9 juillet 2004

C est bon , vous pouvez arretez de chercher, il fallait simplement que je surcharge mon opérateur = car sinon je desallouais mon tableau et donc je pointais vers qqchse de vide.
Merci qd meme de l aide..