Message d'erreur de SDL

The_Sin Messages postés 43 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 4 février 2006 - 4 févr. 2006 à 13:56
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 4 févr. 2006 à 17:28
Salut,
J'ai fais un programme en SDL en C, il marche bien mais que je le lance dans un terminal ( je suis sous Ubuntu Linux) à la fermeture je m'aperçois d'un message d'erreur :
*** glibc detected *** double free or corruption (out): 0x080658d8 ***
Je ne sais pas pourquoi il dit ça, surtout que j'ai liberé toutes mes surfaces et qu'une seule fois alors si quelqu'un sait pourquoi ?
Merci d'avance^^

1 réponse

cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
4 févr. 2006 à 17:28
Salut, ton message d'erreur en dit déjà beaucoup, cette erreur est du à plusieurs free sur le même pointeur (ce qui ne devrait pas arriver sauf si tu fais des allocations dynamiques entre les deux).
Par exemple
int *pt;
pt = (int*)malloc(sizeof(int));
free(pt);
free(pt);

Renverra cette erreur. Pour éviter ce type de messages tu peux déjà, avant chaque free faire un if sur ton pointeur à désallouer.
if(pt)
free(pt);

Mais de tout de façon, l'erreur persistera quand même si tu fais un free sur pt après, à ce moment là faits
if(pt) {
free(pt);
pt = 0;
}else{
printf("Erreur, pointeur déjà désaloué!!\n");
}
Pour chaque désallocation, j'espère que ça t'aidera à trouver l'erreur (et puis peut-être que la SDL désalloue certaines choses toute seule, je ne connais pas trop)!! Au pire passes nous ton bout de code.

Bonne chance.

Bouba
0
Rejoignez-nous