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 avec malloc


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 84
    Par défaut probleme avec malloc
    Salut tlms,

    alors voila mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct States *PQ = (struct States *) malloc( sizeof(struct States)   );
    printf("ici \n");
    free(PQ);
    printf("ok\n");
    alors le ici s'imprime, mais apres :

    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
    31
    32
    33
    *** glibc detected *** ./parseur: free(): invalid next size (fast): 0x0847e7f0 ***
    ======= Backtrace: =========
    /lib/libc.so.6[0xba93a4]
    /lib/libc.so.6(cfree+0x96)[0xbab356]
    ./parseur[0x804d7bf]
    ./parseur[0x804c1cc]
    ./parseur[0x804e55d]
    /lib/libc.so.6(__libc_start_main+0xe5)[0xb506e5]
    ./parseur[0x8048941]
    ======= Memory map: ========
    00110000-00111000 r-xp 00110000 00:00 0          [vdso]
    0040b000-00418000 r-xp 00000000 08:05 117433     /lib/libgcc_s-4.3.2-20081105.so.1
    00418000-00419000 rw-p 0000c000 08:05 117433     /lib/libgcc_s-4.3.2-20081105.so.1
    00b15000-00b35000 r-xp 00000000 08:05 117419     /lib/ld-2.9.so
    00b36000-00b37000 r--p 00020000 08:05 117419     /lib/ld-2.9.so
    00b37000-00b38000 rw-p 00021000 08:05 117419     /lib/ld-2.9.so
    00b3a000-00ca8000 r-xp 00000000 08:05 117420     /lib/libc-2.9.so
    00ca8000-00caa000 r--p 0016e000 08:05 117420     /lib/libc-2.9.so
    00caa000-00cab000 rw-p 00170000 08:05 117420     /lib/libc-2.9.so
    00cab000-00cae000 rw-p 00cab000 00:00 0 
    00cb0000-00cd7000 r-xp 00000000 08:05 117426     /lib/libm-2.9.so
    00cd7000-00cd8000 r--p 00026000 08:05 117426     /lib/libm-2.9.so
    00cd8000-00cd9000 rw-p 00027000 08:05 117426     /lib/libm-2.9.so
    08048000-08053000 r-xp 00000000 08:05 279832     /home/Amine/Bureau/PFE/Programme/EndGdd/parseur
    08053000-08054000 rw-p 0000a000 08:05 279832     /home/Amine/Bureau/PFE/Programme/EndGdd/parseur
    08054000-08057000 rw-p 08054000 00:00 0 
    0847a000-0849b000 rw-p 0847a000 00:00 0          [heap]
    b7f00000-b7f21000 rw-p b7f00000 00:00 0 
    b7f21000-b8000000 ---p b7f21000 00:00 0 
    b803d000-b803e000 rw-p b803d000 00:00 0 
    b805c000-b8061000 rw-p b805c000 00:00 0 
    bfa4c000-bfa61000 rw-p bffeb000 00:00 0          [stack]
    Abandon
    Merci

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Fais un nouveau projet (un nouveau projet, c'est important) et teste ce programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include <stdio.h>
    #include <stdlib.h>
    #include "states.h" /* contient la déclaration de la structure States */
     
    int main()
    {
        struct States *PQ = (struct States *) malloc( sizeof(struct States)   );
     
        printf("ici \n");
        free(PQ);
        printf("ok\n");
     
        return 0;
    }
    Quels sont les résultats ? Poste ici la définition de struct States si possible.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 84
    Par défaut
    Ca marche, avec un new programme,
    alors es ce que vous serez pas ou se trouve le probleme, je sais que c'est un probleme d'allocation memoire ou quelque chose comme ca, alors !!!

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Cela veut tout simplement dire que le problème ne vient pas de ce malloc/free. Il vient d'ailleurs. Sans le code complet de ton programme, je ne pourrai pas t'aider davantage.

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Vu l'erreur remontée, cela veut dire que quelq'un jardine dans un jardin qui ne lui appartient pas.

    Il va falloir tester et regarder ton code
    • recherche des double free
    • recherche des copies sur un bloc alloué par malloc qui seraient plus longues que la taille du bloc alloué (je penche pour cette hypothèse)
    • recherche des free dont le pointeur continuerai à être utilisés par la suite
    • recherche des variables locales non initialisées


    Pour t'aider, tu peux commencer à élever le niveau de warning de ton compilateur. En général, cela aide (surtout pour les variables non initialisées)

    Après, le debogueur, les traces et la lecture ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. probleme avec malloc et realloc
    Par zouari.rami dans le forum Débuter
    Réponses: 2
    Dernier message: 12/03/2011, 14h07
  2. Probleme avec malloc sur tableau de chaine
    Par grex1 dans le forum C
    Réponses: 2
    Dernier message: 12/09/2010, 22h36
  3. probleme avec malloc
    Par coyotemk dans le forum Débuter
    Réponses: 5
    Dernier message: 20/12/2009, 21h34
  4. probleme avec les malloc snprintf
    Par pinto_armindo dans le forum Réseau
    Réponses: 8
    Dernier message: 30/10/2007, 18h08
  5. Probleme avec malloc
    Par boula dans le forum C
    Réponses: 6
    Dernier message: 03/07/2007, 09h36

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