Galett
Messages postés115Date d'inscriptionjeudi 7 février 2002StatutMembreDernière intervention21 mai 2005 27 janv. 2003 à 15:27
tiens un compteur de désallocation, c'est pas bête, voilà une info qui pourrait me servir :o)
cs_GoldenEye
Messages postés527Date d'inscriptionvendredi 14 septembre 2001StatutMembreDernière intervention 6 octobre 20084 23 janv. 2003 à 16:27
C'est pas récursif clap clap clap :-))
Fais attention au mélange C/C++, bcp de puristes te le reprocheront et ça diminue la lisibilité du code voire même la portabibilité. Comme le dis Kaid révise bien les allocations mémoires. Tout ce qui est alloué à un moment doit être désalloué. Pour t'aider tu peux tout simplement utiliser un compteur d'allocation et un compteur de désallocation qui te permettront de savoir où tu en est.
loraine9999
Messages postés6Date d'inscriptiondimanche 12 janvier 2003StatutMembreDernière intervention23 janvier 2003 23 janv. 2003 à 16:01
ouoauauouaaaaaaaaaaah merci pour tous ces bons conseils ;-)
mon compilateur c'est borland builder C++ version6
on mélange du C et du C++...
cs_nEUrOne
Messages postés41Date d'inscriptiondimanche 17 novembre 2002StatutMembreDernière intervention14 avril 2004 23 janv. 2003 à 12:48
en tou cas, c'est bien indenté (emacs il me semble)
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 23 janv. 2003 à 11:31
Pour finir (oui ca fait beaucoup), tu as des fuites mémoire:
1- m1 = (int**)malloc(lignes1 * sizeof(int*)) ;
2- m1[INDEX] = (int*)malloc(colonnes1 * sizeof(int)) ;
3- L'étape qu'il te manque -> libérer les tableaux allouer par 2
4- free(m1);
for(int i=0;i<colonnes1;i++)
free(m1[i]);
free(m1);
cs_vieuxLion
Messages postés455Date d'inscriptionsamedi 26 octobre 2002StatutMembreDernière intervention 6 avril 20048 23 janv. 2003 à 11:13
C'est bien présenté, pour rendre encore plus joli, tu pourrais rappeler la multiplication :
[1 0] [1] [1]
x =
[0 1] [2] [2]
et puis utilise le new[]/delete[]
Pour plus de réutilisation met tout ca dans une classe Matrice et dote la de constructeurs, d'une méthode d'impression,...-)
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 23 janv. 2003 à 10:27
- Et justement dans le cas précédement cité, tu retournes NULL dans la fonction main(), ca marche, mais c'est pas très logique (d'autant que tu retournes aussi 0 en cas de succès).
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 23 janv. 2003 à 10:24
- Pourquoi mélanger du C (malloc() & free()) avec du C++ (cout) ?
- Sinon dans le code suivant, si l'allocation mémoire se passe mal, tu libères un pointeur NULL:
27 janv. 2003 à 15:27
23 janv. 2003 à 16:27
Fais attention au mélange C/C++, bcp de puristes te le reprocheront et ça diminue la lisibilité du code voire même la portabibilité. Comme le dis Kaid révise bien les allocations mémoires. Tout ce qui est alloué à un moment doit être désalloué. Pour t'aider tu peux tout simplement utiliser un compteur d'allocation et un compteur de désallocation qui te permettront de savoir où tu en est.
23 janv. 2003 à 16:01
mon compilateur c'est borland builder C++ version6
on mélange du C et du C++...
23 janv. 2003 à 12:48
23 janv. 2003 à 11:31
1- m1 = (int**)malloc(lignes1 * sizeof(int*)) ;
2- m1[INDEX] = (int*)malloc(colonnes1 * sizeof(int)) ;
3- L'étape qu'il te manque -> libérer les tableaux allouer par 2
4- free(m1);
for(int i=0;i<colonnes1;i++)
free(m1[i]);
free(m1);
23 janv. 2003 à 11:13
[1 0] [1] [1]
x =
[0 1] [2] [2]
et puis utilise le new[]/delete[]
Pour plus de réutilisation met tout ca dans une classe Matrice et dote la de constructeurs, d'une méthode d'impression,...-)
23 janv. 2003 à 10:27
23 janv. 2003 à 10:24
- Sinon dans le code suivant, si l'allocation mémoire se passe mal, tu libères un pointeur NULL:
if (!m1) // m1=NULL
{
free(m1) ; // free(NULL);
cout << endl << "erreur d'alloc 1ere matrice!!! " ;
return NULL ;
}
23 janv. 2003 à 09:49