Bonjour,
Voilà je développe actuellement une application de type VNC, avec affichage d'écran à distance. J'avais déjà un problème au niveau de la gestion mémoire serveur, mais maintenant c'est au niveau du client (celui qui affiche les images à distance) où la taille du processus en mémoire augmente constamment.
Donc en fait mes images sont envoyées d'un Composant StreamServer vers un StreamClient (NMStrm) . Quand celui-ci reçoit des données on execute ce code :
Donc en fait j'ai modifié le constructeur du thread afin de passer en paramètre le flux entrant. Et voici le code du thread en lui même :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Affichage *thread_affiche = new Affichage(false,strm); delete strm,thread_affiche;
Donc en fait le flux rentrant est chargé dans un objet de type JPG et ensuite affiché dans un Paintbox. je pense avoir bien libéré la mémoire a chaque étape quelqu'un aurait donc t-il une solution svp ? Merci d'avance !!
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 TMemoryStream *flux; __fastcall Affichage::Affichage(bool CreateSuspended,TStream *strm) : TThread(CreateSuspended) { FreeOnTerminate=true; flux = new TMemoryStream(); flux->LoadFromStream(strm); delete strm; } __fastcall Affichage::Affichage(bool CreateSuspended) : TThread(CreateSuspended) { } void __fastcall Affichage::Execute() { TJPEGImage *affiche = new TJPEGImage(); affiche->LoadFromStream(flux); delete flux; Form12->PaintBox1->Canvas->Draw(0,0,affiche); delete affiche; Terminate(); }
Partager