Bonjour,
Je dois �crire un flux de donn�es dans un fichier qui au final sera de plusieurs giga.
Mon probl�me est qu'� mesure que j'�cris dans mon fichier les donn�es qui arrive, j'ai la ram qui augmente jusqu'� saturation et quand je quitte mon programme la m�moire vive n'est pas lib�r� sauf si je relance ma lecture en �crasant le fichier, dans ce cas la m�moire est lib�r�e et � nouveau gonfl�e � mesure de l'�criture du fichier.
J'ai regard� un peu du c�t� du mapping mais je dois avou� que je suis un peu perdu.
Voici mon code:
J'ai essay� d'ouvrire / fermer le fichier pour chaque it�ration mais �a ne change rien, la m�moire continu � gonfler...
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 #include <iostream> #include <fstream> #include <vector> int main() { typedef unsigned char uint8; typedef vector<uint8>::size_type v_size_type; v_size_type const buf_size = 512000; vector<uint8> buf(buf_size); long i; ofstream SaveFile("my_file", ios::app | ios::trunc | ios::binary); if(!SaveFile){ throw "erreur ouverture/creation fichier ecriture"; } for (i=0;i<FLUX;i+=LARGEUR){ //Remplissage du buffer LectureFlux(i,1000,reinterpret_cast<uint8*>(&buf[0]); //Ecriture du buffer SaveFile.write(reinterpret_cast<char const*>(&buf[0]), buf.size()*sizeof(buf[0])); SaveFile.flush(); } SaveFile.close(); return 0; }
Merci pour votre aide.
Mario
PS: je suis sous linux
Partager