[C] Problème avec une grosse allocation dynamique

Cow_B Messages postés 41 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 5 avril 2006 - 23 janv. 2004 à 22:39
Cow_B Messages postés 41 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 5 avril 2006 - 24 janv. 2004 à 12:46
Salut les gens !!!

Bon, une fois de plus j'ai besoin de m'en remettre à vous. J'ai fait un programme au sein duquel je fais une allocation dynamique. Lorsque je le compile, pas d'erreur, quand le programme tourne pas d'erreur, mais kan je sors du programme par contre, là il y a erreur...

Alors je voudrais savoir si mon allocation est correcte ?

long ***message_bin;
fflush(stdin);
gets(messag);
longueur = strlen(messag);
nb_iteration = iteration(longueur);
// Cette boucle alloue dynamiquement la première dimension du tableau message_bin.
message_bin = (long***)malloc(nb_iteration*sizeof(long)); 
for (i=0; i<nb_iteration; i++) 
{ 
// Cette boucle alloue dynamiquement la seconde dimension du tableau message_bin.
message_bin[i] = (long**)malloc(4*sizeof(long));
for (j=0; j<4; j++) 
{ 
// Cette boucle alloue dynamiquement la troisieme dimension du tableau message_bin.
message_bin[i][j] = (long*)malloc(8*sizeof(long));
}
}


Cow-B
-----------------------------------------------
C'est au pied du mur.... qu'on voit le mieux le mur
-----------------------------------------------

4 réponses

cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 janv. 2004 à 09:09
tu a oublié de liberer la zone alloué
0
Cow_B Messages postés 41 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 5 avril 2006
24 janv. 2004 à 10:03
Bah le problème, c'est que lorsque je libère la mémoire Visual (.Net) me dit ke je fais un grave connerie.... Alors peut être ke je ne le fais pas correctement... enfin bref, ca couille un peu.

Mais sinon, je voudrais déjà savoir, si comme allocation dynamique, c'est correcte ?

Voilà ;) Merki

Cow-B
-----------------------------------------------
C'est au pied du mur.... qu'on voit le mieux le mur
-----------------------------------------------
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
24 janv. 2004 à 11:06
tu fait a chaque fois malloc(...*sizeof(long)) alors que quand tu alloue un long ***, c'est un espace pour long ** et pas long, enfin c'est comme ca que je vois le truc

message_bin = (long***)malloc(nb_iteration*sizeof(long**));
for (i=0; i<nb_iteration; i++)
{
// Cette boucle alloue dynamiquement la seconde dimension du tableau message_bin.
message_bin[i] = (long**)malloc(4*sizeof(long*));
for (j=0; j<4; j++)
{
// Cette boucle alloue dynamiquement la troisieme dimension du tableau message_bin.
message_bin[i][j] = (long*)malloc(8*sizeof(long));
}
}

a+
0
Cow_B Messages postés 41 Date d'inscription mardi 13 janvier 2004 Statut Membre Dernière intervention 5 avril 2006
24 janv. 2004 à 12:46
MMEERRCCII BEAUCOUP !!!!!!!!

Ca marche impec maintenant !!!! :big) :big) :big)

Cow-B
-----------------------------------------------
C'est au pied du mur.... qu'on voit le mieux le mur
-----------------------------------------------
0
Rejoignez-nous