begin process at 2012 05 29 15:24:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Pb avec la fonction free en C


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb avec la fonction free en C

mercredi 19 mai 2004 à 15:25:24 | Pb avec la fonction free en C

Cako19


Bonjour,

J'ai un problème lorsque je souhaite libérer une chaîne de caractère et je ne trouve pas la réponse dans le forum bien que le sujet ait déjà été abordé.

Voilà le code que j'ai :

sha1 = (char*)malloc(20*sizeof(char)+1);

[ ou sha1 = (char*)malloc(sizeof(char*));]

...
...
... opérations avec sha1 où je lui affecte une chaine de caractère de 20 octets....
...
...

free( sha1 );

et sur le free( sha1 ), j'ai une grosse erreur qui arrête le programme.

Merci d'avance pour votre aide,

Cako19
mercredi 19 mai 2004 à 15:35:12 | Re : Pb avec la fonction free en C

BruNews

Administrateur CodeS-SourceS
sha1 = (char*)malloc(21); est bon si tu ne modifies pas sha1 ulterieurement, genre sha1++ ou autre.
free(sha1); doit passer.

ciao...
BruNews, Admin CS, MVP Visual C++
mercredi 19 mai 2004 à 15:50:29 | Re : Pb avec la fonction free en C

Cako19

Malheureusement ça ne marche pas et je ne sais pas si je modifie sha1 car la valeur est retournée par une fonction appartenant à une dll.
Du coup en fait, je ne pense pas que sha1 à proprement parlé est modifié.

Mais si jamais sha1 était modifié, comment faire pour libérer la mémoire ?

Merci en tout cas pour ta réponse BruNews !!


Cako19
mercredi 19 mai 2004 à 17:16:52 | Re : Pb avec la fonction free en C

vecchio56

Administrateur CodeS-SourceS
il faut que tu sauvegarde sha1 au moment de l'affectation:

char* old = sha1 = (char*)malloc(21);
//utilisation de sha1
free(old);
mercredi 19 mai 2004 à 20:19:08 | Re : Pb avec la fonction free en C

djl


char* old = sha1 = malloc(21);

tout simplement, la conversion void* -> char* est implicite
mercredi 19 mai 2004 à 20:27:40 | Re : Pb avec la fonction free en C

vecchio56

Administrateur CodeS-SourceS
char* sha1;
char* old = sha1 = malloc(21);
-->
error C2440: '=' : impossible de convertir de 'void *' en 'char *'
La conversion de 'void*' en pointeur vers non 'void' nécessite un cast explicite
mercredi 19 mai 2004 à 20:28:59 | Re : Pb avec la fonction free en C

vecchio56

Administrateur CodeS-SourceS
je parie que c'est parce que je suis en C++
mercredi 19 mai 2004 à 20:31:21 | Re : Pb avec la fonction free en C

djl


sans doute, compile avec gcc ou dans ton mode C
lundi 24 mai 2004 à 09:45:41 | Re : Pb avec la fonction free en C

Cako19

La copie du pointeur ne change rien à mon pb. J'ai toujours une erreur lorsque je le libère.
lundi 24 mai 2004 à 12:04:36 | Re : Pb avec la fonction free en C

Cako19

Désolée pour le nombre de message précédents, je croyais que c'était planté :)

Voici en gros mon code

char* sha1;
sha1 = malloc(21);
...

char* sha1_bis= sha1;

//utilisation de la fonction qui modifie sha1_bis
EcritureSha1( sha1_bis, adresseDepart, NomFichierH86, 0, sErreur );
...

free(sha1);

et ceci fait planter mon programme.

Help please, je ne vois pas ce qui ne va pas.


1 2

Cette discussion est classée dans : fonction, pb, char, free, sha1


Répondre à ce message

Sujets en rapport avec ce message

pb avec variable [ par jeffise57 ] Please aidez moiJe reçoit comme arugument du fonction des variables unsigned char* et je doit passer dans une deuxième fonction les même arguments mai pb avec une fonction qui retourne une chaine de caractère [ par othland ] slt tlm: j'ai introduit le code suivant: char * my_func(........) {char ch[30];   mon code..... return(ch); } void main() { char chaine[30];   chaine Pb fonction, char [ par Sim 2005 ] Salut,J'ai un problème dans l'appel d'une fonction, il se poduit une erreur lors de la compilation. Il s'agit de Regopenkeyex, selone le prototype, po Pb de debutant en C [ par tezca_system ] BonjourJ'ai des pb pour manipuler char *argv[] lors de son passage en argument d'une fonction.char *argv[] est une chaine de caractere saisi à l'invit fonction qui retourne une chaine==>libération de la mémoire [ par tibob51 ] Bonsoir,J'ai eu besoin d'utiliser une fonction me retournant une chaine,après mes recherches sur cpp france j'ai trouvé la syntaxe suivante:char* Fonc fonction qui crash à retardement [ par clad67150 ] Bonjour à tous !Je viens poster parce que j'ai un petit problème, j'essaye de faire une fonction de debug qui marche comme un printf() et qui affiche transfére de char dans une fonction [ par logant83 ] Bonsoir voila enfaite j'ai posé un poste avant hier et on ma donnée la solution que j'attendai et je vous en remercie mais enfaite j'essay d'envoyer u Fonction retournant un char[20] [ par seb2086 ] Bonjour,J'ai une variable char a[20] que je voudrais retourner dans une fonction mais je ne sais pas comment faire.Merci pour votre aide. !!! Pb d'allocation mémoire !!! [ par yoyo269 ] Bonjour à tous !Comme le titre l'indique, j'ai un petit souci avec l'allocation de mémoire.En fait j'ai un char*, auquel j'applique un malloc. Ensuite PB chaine de caractere en argument d'une fonction [ par zeguizmo ] Salut à tous, Bon, je ne suis pas une flèche en programation, et je bloque sur un souci qui va peut etre vous paraitre dérisoire, mais pas moyen, je c


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,897 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales