Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1451 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  MFC : comment delete le buffer apres avoir Read un CFile ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MFC : comment delete le buffer apres avoir Read un CFile ?

n°810842
flou1
Posté le 30-07-2004 à 10:43:54  profilanswer
 

Voila jai mon appli qui lit un fichier, mon probleme est que quand jutilise Read pour mettre dans un buffer l'interieur du fichier...je ne peux pas le free sinon segfault :p
 
Voila mon code :

Code :
  1. CFile myFile(hFile);
  2. int dwLength = (int)myFile.GetLength();
  3. char *buffer = new char[dwLength];
  4. DWORD dwRead;
  5. dwRead = myFile.Read(buffer, dwLength);
  6. buffer[dwLength] = 0;
  7. [...] //je parse mon buffer pour chopper ce que je veux...etc
  8. myFile.Close();
  9. delete buffer; // <= C'est la ou ca casse :)
  10. //Fin de ma fonction (je me sert plus de buffer.)


 
Sur msdn les exemples donnés sont sans les delete et mon probleme est qu'a chaque fois que je quitte mon programme il me fait un :
Detected memory leaks!...etc
 
Je sens la connerie toute bete...mais javoue que je ne voie pas ou ca foire :)
 
 
Merci pour l'aide :)


Message édité par flou1 le 30-07-2004 à 11:06:25
mood
Publicité
Posté le 30-07-2004 à 10:43:54  profilanswer
 

n°810916
tyrion42
Posté le 30-07-2004 à 11:29:53  profilanswer
 

si c'est un new[], alors il faut faire un delete []

n°810936
flou1
Posté le 30-07-2004 à 11:36:55  profilanswer
 

J'avais deja testé avec le [], et ca me fait la meme chose :(

n°815308
tyrion42
Posté le 04-08-2004 à 21:49:37  profilanswer
 

Hep !!!  
 
l'erreur est ici :
buffer[dwLength] = 0;  
 
si tu alloue un tableau de x elements, l'indice peut varier de 0 à x-1 !

n°815310
Taz
bisounours-codeur
Posté le 04-08-2004 à 21:53:29  profilanswer
 

si tu as peur des fuites, tu peux utiliser std::vector<char>
 
 

Code :
  1. CFile myFile(hFile);
  2.    int dwLength = (int)myFile.GetLength();
  3.    std::vector<char> buffer(dwLength + 1);
  4.  
  5.    DWORD dwRead;
  6.    dwRead = myFile.Read(buffer.begin(), dwLength);
  7.    buffer[dwRead] = 0; // petite faute
  8.    
  9.    [...] //je parse mon buffer pour chopper ce que je veux...etc
  10.    
  11.    myFile.Close();
  12.    // plus rien à faire


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  MFC : comment delete le buffer apres avoir Read un CFile ?

 

Sujets relatifs
[PHP/SQL] - delete [résolu][VC++6/MFC] Facilités pour gérer une configuration, genre fichier ini?
[FORTRAN] read ou pas read?Comment savoir si un buffer a été compressé avec Gzip (Zlib) ?
[MFC]Changer la taillede la police dans une CRichEditView[MFC]Titre de la fenetre principale de l'application
l'operateur delete en C++...comment ca marche?MFC : Attendre une réponse du serveur
MFC : Pb de buffer 
Plus de sujets relatifs à : MFC : comment delete le buffer apres avoir Read un CFile ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR