labo C td 5 problème avec free()

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu labo C td 5 problème avec free()

Message  karemkadidola le Mar 08 Nov 2011, 18:35

dans l'exercice 13 du td 5 j'ai l'erreur que vous pouvez voir sur le screen en essayant de libérer la zone mémoire allouée dynamiquement par la fonction getTexte02 quelqu'un a une idée...merci d'avance.




le message d'erreur en entier:

..\src\tdc5.c:50:2: error: passing argument 1 of 'free' discards qualifiers from pointer target type
c:\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/stdlib.h:366:38: note: expected 'void *' but argument is of type 'const char *'


Dernière édition par karemkadidola le Mar 08 Nov 2011, 23:54, édité 1 fois

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  nvs le Mar 08 Nov 2011, 19:02

pour ton problème de compilation, je ne vois pas, là, tout de suite Suspect

cependant, même après que tu auras réglé ce problème, tu risques d'en rencontrer un nouveau : free ne fonctionne bien que si on lui fournit en argument NULL ou le résultat d'une allocation dynamique (le retour de malloc, calloc ou realloc). dans tous les autres cas, son comportement est indéterminé Smile




[edt] : vire le const et ça devrait compiler Smile





pirat

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  karemkadidola le Mar 08 Nov 2011, 21:20

j'ai essayé de virer const là j'ai une nouvelle erreur sinon ds l'ennoncé il est dit que getText02 renvoie un pointeur vers une zone mémoire qui a été allouée dynamiquement donc je suppose que dans la fonction dont le code nous est inaccessible il y a un malloc quelque part et c'est justement pour ça que j'ai pensé faire un free (la zone mémoire en question) ce qui est d'ailleurs demandé dans l'exercice mais voilà ça ne marche pas....i'm puzzeld peut être qu'il voudra bien marcher plus tard je verrai bien sinon merci à vous mr nvs..

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  nvs le Mar 08 Nov 2011, 21:46

karemkadidola a écrit:[...] sinon ds l'ennoncé il est dit que getText02 renvoie un pointeur vers une zone mémoire qui a été allouée dynamiquement donc je suppose que dans la fonction dont le code nous est inaccessible il y a un malloc quelque part et c'est justement pour ça que j'ai pensé faire un free (la zone mémoire en question) ce qui est d'ailleurs demandé dans l'exercice mais voilà ça ne marche pas [...]
en effet, ça ne marche pas puisque tu ne donnes pas à free la valeur retournée par un malloc (ou apparenté) !





Twisted Evil

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  smb le Mar 08 Nov 2011, 22:11

karemkadidola a écrit:j'ai essayé de virer const là j'ai une nouvelle erreur sinon ds l'ennoncé il est dit que getText02 renvoie un pointeur vers une zone mémoire qui a été allouée dynamiquement donc je suppose que dans la fonction dont le code nous est inaccessible il y a un malloc quelque part et c'est justement pour ça que j'ai pensé faire un free (la zone mémoire en question) ce qui est d'ailleurs demandé dans l'exercice mais voilà ça ne marche pas....i'm puzzeld peut être qu'il voudra bien marcher plus tard je verrai bien sinon merci à vous mr nvs..

1) Je constate que dans la capture d'écran que tu donnes, l'onglet tdc5.c est précédé d'un astérisque qui veut dire que cette version du fichier n'a pas été sauvée avant d'être compilée !

2) Je constate que ptrchar est défini à juste titre pour l'exercice 1 comme pointeur vers const char, MAIS est utilisé pour l'exercice 2 comme récepteur d'une adresse vers non const de getTexte02. Hors free n'accepte pas comme argument un pointeur vers const !

Evil or Very Mad

smb

Nombre de messages : 1035
Age : 64
Prénom : Stéphan
Statut : Don de sang, don de vie!
Localisation : Spy
Date d'inscription : 23/01/2007

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  karemkadidola le Mar 08 Nov 2011, 22:52

A hannnn !!! en effet tout le problème residait là, je n'ai pas fait attention que getTexte02 retournait un void* j'ai modifié conséquemment et mnt je peux libérer la zone mémoire sans problème...juste petit souci au passage, en incrémentant mon pointeur qui dorénavant était devenu de type void* là pas moyen...mais ça va maintenant. merci à vous monsieur SMB

karemkadidola

Nombre de messages : 244
Prénom : aimé
Date d'inscription : 13/10/2009

Revenir en haut Aller en bas

resolu Re: labo C td 5 problème avec free()

Message  Contenu sponsorisé Aujourd'hui à 08:40


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum