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 :

Valgrind probleme help


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Par défaut Valgrind probleme help
    ==11432== Conditional jump or move depends on uninitialised value(s)
    ==11432== at 0x8048B62: count_str (cp_buff_to_tab.c:22)
    ==11432== by 0x8048B86: cp_buff_to_tab (cp_buff_to_tab.c:41)
    ==11432== by 0x80487D8: main (main.c:45)
    ==11432==
    ==11432== Conditional jump or move depends on uninitialised value(s)
    ==11432== at 0x80489B7: my_strlen (functions.c:38)
    ==11432== by 0x8048BDA: cp_buff_to_tab (cp_buff_to_tab.c:51)
    ==11432== by 0x80487D8: main (main.c:45)
    ==11432==
    ==11432== Invalid write of size 4
    ==11432== at 0x8048C75: cp_buff_to_tab (cp_buff_to_tab.c:59)
    ==11432== by 0x80487D8: main (main.c:45)
    ==11432== Address 0x3C11641C is 4 bytes inside a block of size 5 alloc'd
    ==11432== at 0x3C03418B: malloc (in /usr/local/lib/valgrind/vgpreload_memcheck.so)
    ==11432== by 0x8048B96: cp_buff_to_tab (cp_buff_to_tab.c:41)
    ==11432== by 0x80487D8: main (main.c:45)
    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
    28
    29
    30
    char    **cp_buff_to_tab(char *str)
    {
      char  **tab;
      int   count;
      int   i;
      int   j;
     
      i = 0;
      count = 0;
      tab = malloc(sizeof(*tab) * count_str(str) + 1);
      while (str[count] != '\0' && str[count] != '\n')
        {
          if (str[count] == ' ' || str[count] == '\n')
            {
              count++;
              i++;
            }
          else
            {
              tab[i] = malloc(sizeof(**tab) * my_strlen(str));
              j = 0;
              while (str[count] != ' ' && str[count] != '\0' && str[count] != '\n')
                tab[i][j++] = str[count++];
              tab[i][j] = '\0';
            }
        }
      i = i + 1;
      tab[i] = 0;
      return (tab);
    }

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Fais tu un delete du tableau hors de la fonction que tu montre. Car oui tu ne peux pas faire le delete dans la fonction car tu renvoie le pointeur, mais ça veut donc dire que tu devra le faire dans l'autre fonction ( celle qui récupère le pointeur )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Il faudrait voir sur quoi pointe str (donc qu'est ce qu'on passe à cp_buff_to_tab) et eventuellement le code de count_str()

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Peut on voir le code des fonctions count_str() et my_strlen() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      tab = malloc(sizeof(*tab) * count_str(str) + 1);
    Ce +1 est très suspect. N'est ce pas plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      tab = malloc(sizeof(*tab) * (count_str(str) + 1));

Discussions similaires

  1. [Batch] Goto problem help
    Par progammaster dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/11/2014, 18h30
  2. Réponses: 21
    Dernier message: 01/09/2011, 09h56
  3. Mario Problem help
    Par macio dans le forum GLUT
    Réponses: 3
    Dernier message: 31/12/2007, 20h27
  4. deux meme constructeurs, probleme help.
    Par Mobistar dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2007, 11h12
  5. [JBoss]Deployed WebServices Probleme Help
    Par llandry dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 08/02/2007, 00h03

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