Problème de mémoire Affichage images
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 :
Code:
1 2
| Affichage *thread_affiche = new Affichage(false,strm);
delete strm,thread_affiche; |
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:
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();
} |
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 !!