Je fais tourner ce bout de code dans un Thread()
Lorsque j'utilise RotateFlip, la mémoire augmente continuellement.
Apparement RotateFlip doit allouer de la mémoire pour fonctionner mais elle ne semble pas être liberée après.
Quand je met mon RotateFlip en commentaire, la mémoire n'augmente plus et mon process reste stable.
Y'at-il une operation à effectuer après un RotateFlip pour éviter cette fuite mémoire?
vid = video.GetBitMap();
Bitmap image = new Bitmap(cam.Width, cam.Height, cam.Stride, PixelFormat.Format24bppRgb, vid);
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
tu pourras tjrs demander de temps a autre au Collecteur de Poubelle de passer faire sa job.
C'est GC.Collect() si ma mémoire est bonne.
Le problème peut très bien venir de ta classe video.
Je te conseille d y aller par élimination pour déterminer quelle ligne est la responsable de la fuite.
Oui mais si je declare mon Bitmap en dehors de mon Thread j'aurai toujours la même image.
Je ne sais pas assigner un IntPtr (variable vid dans mon code) à un Bitmap autrement que par son contstructeur.
Je pourrai declarer le Bitmap avant en effet mais je ne sais pas comment faire autrement que par le constructeur.
Le soucis c'est que je suis dans une méthode et que je dois faire un return image
Si je fais le dispose il va me peter une erreur
Je vais tenter de le faire à l'arrivée au cas ou.
Sinon c'est bien ca la cause car lorsque j'enleve la ligne de RotateFlip, la mémoire n'augmente plus...
[auteurdetail.aspx?ID=228792 ducker88]
J'ai fais comme tu as dis mais la mémoire augmente toujours.
Je reprécise que si je met en commentaire la ligne suivante, la mémoire n'augmente plus
image.RotateFlip(RotateFlipType.RotateNoneFlipY);
Bitmap image faisait une reservation mémoire et qu'ensuite le new utilisait cette mémoire.
Non, newinstancie l'objet et le place en mémoire. La variable image n'est qu'une référence vers cet objet en mémoire.
Le Collecteur de Poubelle ???????? Traduction mot pour mot :) En fait, le terme français est ramme miette.
[:D] @++