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 :

malloc probleme d'allocation


Sujet :

C

  1. #1
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut malloc probleme d'allocation
    Bonjour,

    J'ai une fonction chargée de lire un fichier dont la longueur de l'enregistrement est inconnu (variable).
    Je passe en argument à cette fonction le path du fichier.
    J'arrive à ouvrir le fichier, à récupérer la taille de enregistrement contenu dans le fichier.
    Ensuite j'alloue avec malloc la taille nécessaire pour stocker les données dans une variable.
    C'est là que mon problème commence....
    Suite à l'allocation, le path passé en argument à la fonction est altéré.
    Cela fait des heures que je cherche pourquoi sans trouver la réponse.
    J'image que j'écrase quelque part une zone mémoire, mais je ne comprend pas pourquoi.
    Un petit coup de main serait le bienvenue.

    Merci

    Voici la fonction ci-dessous
    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
     
    char *ReadTmpFile(const char *tmpfile){  
     long fsize;                             
     char *filedata;                         
     size_t result;                          
     FILE *pf=NULL;                          
     
     if(tmpfile==NULL){                      
       printf("Error: invalid tmp file name")
       return NULL;}                         
     pf=fopen(tmpfile,"r");                  
     if(pf==NULL){                           
       printf("%s",strerror(errno));         
       return NULL;                          
     } 
      fseek(pf,0,SEEK_END);                     
      fsize=ftell(pf);                          
      rewind(pf);                              
      printf("<br>6- %s %d",tmpfile,strlen(tmpfile));    /* ici c'est OK*/
      filedata = (char*) malloc (sizeof(char)*(fsize+1));
      if(filedata==NULL){
        printf("Error: Allocation failed");
        return 0;}
      printf("<br>7- %s %d",tmpfile,strlen(tmpfile));    /* ici c'est mort...*/
      result=fread(filedata,1,fsize,pf);   
      if(result!=fsize){                         
        printf("Error: Unable to read tmp file");     
        return NULL;}                            
      fclose(pf);                                
      return filedata;                          
     }
    le display issue des printf :

    6- /data/tmp/tmpEcgGxQ 32
    7- /data/tmp/tmpEcgGxQm 36

  2. #2
    Membre éclairé Avatar de SPACHFR
    Profil pro
    Paaaaaa
    Inscrit en
    Février 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paaaaaa

    Informations forums :
    Inscription : Février 2004
    Messages : 557
    Par défaut
    Il suffit souvent de poster pour trouver la réponse......
    En fait l'allocation de mon argument tmpfile avant l'appel à cette fonction était mauvaise (trop court).

    Après correction tout marche bien.

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

Discussions similaires

  1. Probleme d'allocation malloc free
    Par cmoibal dans le forum Linux
    Réponses: 1
    Dernier message: 23/05/2007, 14h21
  2. probleme d' allocation
    Par mhackgyver dans le forum C
    Réponses: 43
    Dernier message: 26/11/2006, 20h37
  3. Probleme d'allocation avec un malloc
    Par theshark85 dans le forum C
    Réponses: 11
    Dernier message: 25/04/2006, 17h30
  4. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  5. probleme d'allocation dynamique
    Par vince3320 dans le forum C
    Réponses: 10
    Dernier message: 22/04/2004, 16h27

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