malloc, free et structures - C - Programmation
Marsh Posté le 17-03-2004 à 13:19:15
merci pour le troll
(je programme en java normalement mais là il faut que je fasse un truc en c, et mes souvenirs sur les pointeurs sont un peu vagues)
Marsh Posté le 17-03-2004 à 13:29:17
l doit être un pointeur sur une struct.
Or, toi tu le déclare comme "Light l;"
Quand tu fais lightDestructor(&l); tu essayes de détruire une struct qui n'est pas alloué dynamiquement => plantage
Il faut écrire "Light *l;" et "lightDestructor(l);"
Marsh Posté le 17-03-2004 à 13:33:41
bah le type Light est un pointeur sur struct Light ...
l est donc bien un pointeur sur une structure.
par contre j'ai oublié la ligne :
l=lightConstructor(1);
(j'édite)
Marsh Posté le 17-03-2004 à 13:47:45
Oups, désolé, j'ai lu trop vite.
Le code que tu as filé a l'air bon.
Essaye de voir si ça ne vient pas d'ailleurs (dépassement de capactité d'un tableau par exemple)
Va voir là pour un pb similaire :
http://forum.hardware.fr/forum2.ph [...] 0&subcat=0
Marsh Posté le 17-03-2004 à 13:53:33
pascal_ a écrit : Oups, désolé, j'ai lu trop vite. |
Argh, je raconte encore des conneries.
Ton code est pas bon.
lightDestructor(&l); => tu passes donc un pointeur sur un pointeur de struc Light.
Donc le free(l) essaye de désallouer le pointeur sur ta struct.
Edit :
donc soit tu écris :
Code :
|
soit
Code :
|
Marsh Posté le 17-03-2004 à 16:47:34
ok
il me semblait que ta première solution est celle que j'avais faite au départ
Marsh Posté le 17-03-2004 à 13:09:55
voila un bout de coude qui m'envoie un segfault à l'appel du destructor
il y a un problème sur mon destructor ou sur mon appel ou les 2 ?
merci pour les réponses
Message édité par xav14 le 17-03-2004 à 13:34:52