Bonjour a tous
Le programme a une fuite de mémoire.
En isolant les appels de procedure comme suit, la fuite est "cerné"
Bon on sait que c'est la routine qui est fautive... Même petit manège...
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 type tarraySW=record Donnees:array[0..4000,0..20]of double; Ok:boolean; end; var ... avant,apres:integer; Mem:TMemoryStatus; begin ... Mem.dwLength:=SizeOf(TMemoryStatus); GlobalMemoryStatus(Mem); avant:=Mem.dwAvailPhys; if not direct(DonneesBrutes, References, DonneesFiltrees) then beep; Mem.dwLength:=SizeOf(TMemoryStatus); GlobalMemoryStatus(Mem); apres:=Mem.dwAvailPhys; memo2.lines.Add('direct '+inttostr(apres-avant));avant:=apres;//15 s'affiche ...
Donc il appaire que la fuite se ferait au niveau de l'appel de la routine, mais non lors de son exécution
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function TForm1.Direct(const Donnees:string;const References:tstringlist;var Filtrees:tarraySw):boolean; var avant,apres:integer; Mem:TMemoryStatus; ... begin Mem.dwLength:=SizeOf(TMemoryStatus); GlobalMemoryStatus(Mem); avant:=Mem.dwAvailPhys; ... Mem.dwLength:=SizeOf(TMemoryStatus); GlobalMemoryStatus(Mem); apres:=Mem.dwAvailPhys; memo2.lines.Add('direct '+inttostr(apres-avant));avant:=apres;//0 s'affiche end;
Est-ce que vous voyez la cause?
Merci d'avance
Partager