Desalocation char** foireuse

Signaler
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008
-
Bonjour, j'ai un probleme d'allocation/désalloc mémoire

voila la bete :

char** File.PMD5;

//Aloue
File.PMD5=new char*[File.NumHash];
for(unsigned int i=0;i<=File.NumHash;i++)
File.PMD5[i]=new char[33];

//S'amuse avec sans faire de buffer overflow

//Désaloue la mémoire
for(unsigned int i=0;i<File.NumHash;i++)
delete[] File.PMD5[i];
delete[] File.PMD5;

Alors ça plante en release mais pas en debug (juste un avertissement sur delete[] File.PMD5; meme si j'ai pas compris pourquoi, j'ai tenté de le virer mais plante quand meme).
Alors le programme plante avec un i variable, je comprend pas ...

Si quelqu'un a compris pourquoi, ce serais simpa une réponse, merci d'avance.

7 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
for(unsigned int i=0;i<=File.NumHash;i++)
=> un cran trop loin
for(unsigned int i=0;i<File.NumHash;i++)
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

bien vus, mais ya quand meme encore des erreurs, je cherche ;-)
Merci deja !!!
Messages postés
700
Date d'inscription
mardi 30 décembre 2003
Statut
Membre
Dernière intervention
27 janvier 2009
4
salut,
le problème est ailleurs, tu dois ecrire en dehors des bornes de ton tableau ...
copie colle le reste ou regarde toi meme, mais ton simple exemple ne devrait pas planter (ton < à la place de <= doit provoquer une fuite de mémoire, et non pas un plantage!)

a+
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

oui, c'est ça qui me chargrine, je cherche, en fait, dans ce tableau de tableau je stoque les MD5 de partie de fichier.
Le client n'a pas de probleme lors de la suppression du tableau, c'est donc un probleme lors de la création de ce tableau sur le serveur, je cherche donc, j'ai une piste la avec un modulo qui ferait chier, mais bon, je crois que je vais le laisser tomber et me refaire une fonction modulo.
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

MARCHE ! c'étais cette histoire de modulo de merde !

bool Modulo(unsigned long Int,unsigned int modulo)
{
float Resultatvirgule;
unsigned int ResultatInt;

Resultatvirgule=((float)Int)/((float)modulo);
ResultatInt=Int/modulo;

return Resultatvirgule==ResultatInt;
}

Ca marche trés bien ! hey hey lol, faut que je l'optimise un peu quand meme par contre meme si ici c'est pas grave de perdre 1/2 ms (sachant que apres le temps d'attente lors de la création du hash est bien plus grande)

Merci de votre aide ! (je pensais que j'étais fou lol) @+ et bon coding (hey hey, plein de bug résolus en plus)
Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Int%modulo == 0 serait déjà mieux je pense.
Messages postés
536
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
22 août 2008

ben c'est ce que je faisais :-(