Bonjour,
J'ai un doute sur la méthode de libération mémoire d'objets.
Dans 1 fonction, je transforme une image de la façon suivante :
A la fin de ma fonction, normalement ma variable img est détruite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 void fonction() { QImage img=label->pixmap()->toImage(); .... traitement .... label->setPixmap(QPixmap::fromImage(img)); }
Si je teste le code ci-dessous, cela ne compile pas :
Pardonnez mes doutes,mes amalgames, mes confusions , je suis pas programmeur professionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void fonction() { QImage *img; img=new QImage(); img=label->pixmap()->toImage(); .... traitement .... label->setPixmap(QPixmap::fromImage(img)); delete img; }
Sur ce point la gestion mémoire est importante, car le QImage peut contenir une valeur importante de donnés, donc si j’appelle plusieurs fois la fonction ....
D'après les tests effectués, l'espace mémoire occupé par l'application augmente lors du 1er appel à la fonction, ne diminue pas, mais n'augmente pas lors du second appel à la fonction.
Partager