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 :

Probleme d'allocation memoire


Sujet :

C

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Par défaut Probleme d'allocation memoire
    Bonjour,

    Je suis en train de faire une petite fonction qui decoupe une chaine suivant un delimiteur passer en parametre
    Il semble que j'ai un probleme au niveau des mallocs, tout fonctionne sur des petits tests mais quand je lui fournis par exemple le path de l'environnement,je rencontre des bizarreries comme ca :
    PATH=/usr/sb.. suivit de caracteres bizarres
    /usr/school/.. ""
    /usr/netsoul.. ""

    Voici le code de ma fonction principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    char    **function_decoupe(char *str, char delimiteur)
    {
      int   i;
      int   start;
      int   end;
      char  **my_word;
      char  *chaine;
     
      i = 0;
      start = 0;
      end = 0;
      my_word = malloc(sizeof(*my_word) * count_word(str, delimiteur));
      while (end < strlen(str) -1)
        {
          end = delim(str, end, delimiteur) -1;
          chaine = affiche(str, start, end);
          my_word[i] = malloc(sizeof(**my_word) * strlen(chaine));
          my_word[i] = chaine;
          i++;
          end += 2;
          start = end;
        }
      my_word[i] = NULL;
      return (my_word);
    }
    Merci de votre aide.
    Cordialement,

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    les balises code c'est [c ode] [/c ode].
    j'ai mis intentionnellement un espace entre le c et le o pour qu'on puisse voir. Sinon c'est le bouton # en haut à droite de l'éditeur !

    Tu ne teste jamais le retour de malloc!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my_word[i] = malloc(sizeof(**my_word) * strlen(chaine));
    my_word[i] = chaine;
    Ceci est faux, tu perds l'adresse mémoire fourniée par malloc, fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strcpy(my_word[i], chaine);
    et alloue un caractère de plus dans le malloc pour avoir la place du zéro terminal.
    En relisant ton code, tu aurais plus simple en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_word[i] = strdup(chaine);
    en n'oubliant pas de faire des free à la fin du prog.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 54
    Par défaut
    Merci pour ta reponse,

    Le probleme venait bien de l'allocation de memoire , j utilisais mal le malloc
    Merci .
    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 22/07/2011, 15h28
  2. Probleme d'allocation memoire
    Par jkofr dans le forum Bibliothèque standard
    Réponses: 7
    Dernier message: 22/01/2010, 00h53
  3. Probleme d'allocation memoire et free()
    Par Darksnakes dans le forum Débuter
    Réponses: 6
    Dernier message: 19/03/2008, 18h53
  4. Problèmes d'allocation memoire
    Par nina2007 dans le forum Linux
    Réponses: 0
    Dernier message: 16/08/2007, 16h19
  5. probleme avec les allocations memoires
    Par david35 dans le forum C
    Réponses: 5
    Dernier message: 21/10/2005, 11h49

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