Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : mémoire en trop [ Archives / Au secours ] (deck_bsd)

vendredi 17 février 2006 à 20:10:48 | mémoire en trop

deck_bsd

Membre Club
Bonjour,

Voici une procédure charger de remplir un liste chainée en lisant les donnée d'un fichier binaire :

void LectureDuFichier(){
    FILE *fichier_in;

    printf("\nLECTURE");
    ptStart=(element*)malloc(sizeof(element));
    ptCur=ptStart;

    fichier_in=fopen("stock.gst",0_READ); // "rb" .
    while(fread(ptCur,sizeof(element),1,fichier_in)!=0){
        if(feof(fichier_in)==0){
            ptCur->ptSuivant=(element*)malloc(sizeof(element));
            ptCur=ptCur->ptSuivant;
        }
    }
    fclose(fichier_in);
    ptEnd=ptCur;
    ptEnd->ptSuivant=NULL;

}

En fait cette procédure fonctionne bien, je dirait même trop bien car elle alloue de la mémoire 1 fois en trop :s . Pourtant j'alloue de la mémoire supplémentaire tantque l'on est pas arrivé à la fin du fichier :/ . Cela ne devrait pas allouer de la mémoire en trop.

Quelqu'un peut t-il m'aider svp?

Merci d'avance.


vendredi 17 février 2006 à 21:10:23 | Re : mémoire en trop

darkpoulpo

element *ptStart,*ptEnd;

void LectureDuFichier(){
    FILE *fichier_in;
    element tmp;
    printf("\nLECTURE");
    ptStart=NULL;

    element **ptCur = &ptStart;
   
    fichier_in=fopen("stock.gst",0_READ); // "rb" .
    fread(&tmp,sizeof(element),1,fichier_in);
    while(!feof(fichier_in)) {
         *ptCur =(element*)malloc(sizeof(element));
         memcpy(*ptCur,&tmp,sizeof(element)); //car si fichier vide ca t'evite d'allouer
         fread(&tmp,sizeof(element),1,fichier_in);
         ptEnd = *ptCur;
         ptCur=&(*ptCur)->ptSuivant;
         *ptCur = NULL;
    }
    fclose(fichier_in);
}


vendredi 17 février 2006 à 21:12:37 | Re : mémoire en trop

darkpoulpo

rajouter ptEnd = NULL; à la suite de ptStart = NULL;



Cette discussion est classé dans : fichier, mémoire, in, trop, ptcur


Répondre à ce message

Sujets en rapport avec ce message

Segmenter un fichier en mémoire C (seulement) [ par golum ] Voila pour ouvrir a partir de mon prog c un fichier de 20 Mo je met 1min et j'aimerais a tout pris diminuer ce temps.Est-il possible de segmenter le f PB ifstream [ par ifren ] j'ai un petit problemle voilaifstream in("fichier.txt");char v_word[256];in >> v_word >> v_word >> v_word;//je reccupere le v_word; et puis j'ai envi gestion de fichier en C++ [ par croftlou ] Bonjour je suis debutant en C++, je desire faire un petit projet en C+++, pour gere des des fichiers en lecture et en ecriture.Pour cela ej voudrai cr comment lire ou écrire à un fichier dans la mémoire ? [ par ilimo ] bonjour,je sais ouvrir un fichier dans la mémoire..mais comment le lire à partir de cette même mémoire ?merci pour votre aide ...-------------j'utilis problème de mémoire [ par ptitchep ] BonjourJe développe un jeux en c++ assembleur 16 bit avec borland c++ 4.5. J'aurais besoin d'une bonne quantité de mémoire (environ 1Mo) pour stocker charger bitmap depuis mémoire ?? [ par cybermax62 ] je voudrais charger un bitmpa depuis une fichier.Je m'explique :je veux me faire un fichier du type *.pak pour stocker mes données (des images). Donc Allocation mémoire [ par thedestiny ] Voila je présente mon projet brievement :C'est un programme qui est censé ouvrir un fichier d'une taille assez conséquente ( 20 mo environ )Plusieurs allouer de la mémoire pile. [ par deck_bsd ] Bonjour, Voila j'ai un problème , j'ai fait une partie de programme qui est chargé d'allouer juste assez de mémoire a un pointeur  de type char pou Buffer trop petit ????????? [ par Grand_steak ] Bonjour.Je réalise actuellement un programme permettant de traiter un fichier texte. Ce fichier texte est composé de caractères ASCII représentant des Gros fichier mémoire (block par block) [ par jockos ] Bonjour,Je développe un logiciel de cryptage.Mon logiciel doit pouvoir crypter de très gros fichier (plusieurs centaines de Mo).Je monte le fichier en


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.