Fonction free en c
wogkiller
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
scoubidou944 Messages postés 719 Date d'inscription Statut Membre Dernière intervention -
scoubidou944 Messages postés 719 Date d'inscription Statut Membre Dernière intervention -
bonjour j'ai un pb avec la fonction free ds un programme il me dit erreur de segmentation lorsque je le lance alor que ds le source j'ai écrit :
T-cod *boite,*elv;
...
elv = ( T_cod *)malloc(...);
...
free(elv);
et l'eereur vien aparamen du elv qu'il veut pa ds le malloc et la je comprend pa!!!!!
merci pour toute aide
T-cod *boite,*elv;
...
elv = ( T_cod *)malloc(...);
...
free(elv);
et l'eereur vien aparamen du elv qu'il veut pa ds le malloc et la je comprend pa!!!!!
merci pour toute aide
A voir également:
- Fonction free en c
- Fonction si et - Guide
- Word 2013 free download - Télécharger - Traitement de texte
- Zimbra free - Guide
- Free office - Télécharger - Suite bureautique
- Sketchup free - Télécharger - 3D
6 réponses
si t'es sure que elv n'est pas supprimé ds ton prog avant le free, alors l'erreur ne vient pas de ce free, mais d'un autre accés non autorisé.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
malloc renvoit un void * donc il faut que ton T_COD soit un typedef de void (ou de void * dans ce cas la c'est T_COD malloc)
Mais je vois pas pourquoi tu t'embetes avec ca, il suffirait de faire :
void *malloc(int);
elv = malloc(...);
free(elv);
--
Jérémy
Mais je vois pas pourquoi tu t'embetes avec ca, il suffirait de faire :
void *malloc(int);
elv = malloc(...);
free(elv);
--
Jérémy
a mon avis il suffit de faire
T-cod *boite,*elv;
...
elv = malloc(...*( T_cod *)); //avec ... un int
...
free(elv);
T-cod *boite,*elv;
...
elv = malloc(...*( T_cod *)); //avec ... un int
...
free(elv);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut!
Juste par hasard c'est une faute de frappe T-cod? Parce que le tiret n'est pas un char autorisé dans le nom d'une variable. Si j'ai bonne mémoire c'est juste des char alphanumériques et le underscore. Si le problème persiste donne une portion du code plus importante ça permettrait d'observer de plus pres où ça coince.
Juste par hasard c'est une faute de frappe T-cod? Parce que le tiret n'est pas un char autorisé dans le nom d'une variable. Si j'ai bonne mémoire c'est juste des char alphanumériques et le underscore. Si le problème persiste donne une portion du code plus importante ça permettrait d'observer de plus pres où ça coince.
autre effet de bord si tu es sur que personne libere ton emplacement entre ton malloc et ton free, es-tu sur de pas avoir un débordement de tableau quelque part.
Dis toi que lorsque tu alloue 31 octets, deja au niveau des allocations, il va aligner sur une adresse paire.
Ensuite il risque de prendre le chiffre pair suivant (32), ou bien la base de 2 suivante (32 ou 64 éventuellement)
maintenant ton free, tu indiques pas la taille à libérer, C donc qu'il la stocke quelque part... genre 4 octets avant par exemple.
Maintenant si dans ta pile tu as un tableau de n indice et que tu écrase à l'indice n, tu sors D limites [0..n[, tu risques d'écraser des données et donc ta zone à libérer peut donc aovir une nouvelle taille de 0, -15....
Si ton pb est pas résolu, poste tt le code si C pas trop long.
Y'a des jours où il faut pas m'chercher.
Et y'a des jours tous les jours.
Dis toi que lorsque tu alloue 31 octets, deja au niveau des allocations, il va aligner sur une adresse paire.
Ensuite il risque de prendre le chiffre pair suivant (32), ou bien la base de 2 suivante (32 ou 64 éventuellement)
maintenant ton free, tu indiques pas la taille à libérer, C donc qu'il la stocke quelque part... genre 4 octets avant par exemple.
Maintenant si dans ta pile tu as un tableau de n indice et que tu écrase à l'indice n, tu sors D limites [0..n[, tu risques d'écraser des données et donc ta zone à libérer peut donc aovir une nouvelle taille de 0, -15....
Si ton pb est pas résolu, poste tt le code si C pas trop long.
Y'a des jours où il faut pas m'chercher.
Et y'a des jours tous les jours.