IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Petite question simple pour libérer une fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Par défaut Petite question simple pour libérer une fonction
    Bonjour,


    J'utilise une fonction que j'ai trouvé sur developpez, cependant je ne sais pas comment libérer la mémoire des allocations qu'elle me fais puisque je l'utilise dans une fonction à part.



    Je vous remercie d'avance !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Comme ta fonction renvoie l'adresse retournée par malloc, il suffit simplement de faire un free dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void bidule(void)
    {
       char chaine[] = "hello tout le monde";
       char * sub;
     
       sub = str_sub(chaine , 5 , 10);
       if (sub != NULL)
       {
          printf("sous-chaine : %s\n" , sub);
          free(sub);
          sub = NULL;
       }
       ...
    }
    Sinon, dans ta fonction, après ton else, le free est inutile, puisque faire un free sur NULL n'a aucun effet.

    Je te conseille aussi de sécuriser ta fonction en vérifiant que start et end ne provoquent pas de débordement.
    Je te conseille également d'éviter les exit sauvages. En principe, il faut remonter l'erreur, afin de bien structurer le programme, et d'éviter à l'OS de libérer lui-même la mémoire allouée par le programme. A chaque malloc doit correspondre un free. Si tu exites ton programme alors qu'il y a eu des allocations dynamiques auparavant, il n'y a aucun free pour eux, et c'est à l'OS de s'en charger (ce qui n'est pas propre, en terme de programmation).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 2
    Par défaut
    Salut,


    J'ai bien fais ce que tu m'as dis sa marche parfaitement sur une fonction et sur ma deuxième, étrangement sa efface avant d'entrer ma variable je te montre :

    Avant:


    Aprés:


    Voilà si tu as une idée ^^

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Donne un code minimaliste qui reproduit le problème.

Discussions similaires

  1. Réponses: 0
    Dernier message: 25/07/2014, 12h40
  2. Réponses: 0
    Dernier message: 11/03/2012, 17h42
  3. Réponses: 2
    Dernier message: 21/10/2011, 10h57
  4. Question simple pour écrire dans une File
    Par HeyItsIan dans le forum Langage
    Réponses: 1
    Dernier message: 03/01/2007, 01h40
  5. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo