 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Jujubond001 Guest
|
Posted: Sat Jun 28, 2003 2:52 pm Post subject: libération de la mémoire prise par un bitmap |
|
|
Bonjour à tous,
Voila, jsui entrain d'écrire un programme où j'ai besoin d'ouvrir et de fermer
un grand nombre d'images. Il est donc vitale de les supprimer apres
utilisation. Le problème, c'est que j'ai toujours cru qu'en utilisant la
commande "delete" sur un objet, ça le supprimer et l'enlever de la mémoire mais
ça n'a pa l'air d'être le cas. Grace à Windows XP, on peut savoir la taille
prise par les applications, la mienne dépasse les 200Mo !! heuresement que j'en
ai assez mais apres je dois le mettre sur un PC avec bcp moins de RAM.
Jé essayé de mettre de plein de commande deffacement mé rien n'y fait. :-(
Alors voila mon code :
//-- déclaration
Graphics::TBitmap *image= new Graphics::TBitmap();
//-- traitement--
// (...)
//-- Libération de la mémoire
image->FreeImage();
image->Dormant();
image->ReleaseHandle();
delete(image);
Connaissez-vous la solution ??
merci d'avance.
Jujubond.
|
|
| Back to top |
|
 |
Vincent Richard Guest
|
Posted: Sat Jun 28, 2003 7:57 pm Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
Le Samedi 28 Juin 2003 16:52, Jujubond001 a écrit :
| Quote: | Voila, jsui entrain d'écrire un programme où j'ai besoin d'ouvrir et de
fermer un grand nombre d'images. Il est donc vitale de les supprimer apres
utilisation. Le problème, c'est que j'ai toujours cru qu'en utilisant la
commande "delete" sur un objet, ça le supprimer et l'enlever de la mémoire
mais ça n'a pa l'air d'être le cas. Grace à Windows XP, on peut savoir la
taille prise par les applications, la mienne dépasse les 200Mo !!
...snip...
Connaissez-vous la solution ??
|
Le problème n'est peut-être pas là où tu le crois. Quand Windows libère de
la mémoire, cette mémoire est peut-être marquée comme libre mais elle reste
allouée à ton application au cas où elle serait utile plus tard.
Je dis ça comme ça, je ne sais absolument pas comment fonctionne Windows
en interne.
PS: "delete" n'est pas une "commande".
Vincent
--
SL> Au fait elle est mieux ma signature maintenant ?
Oui. T'enlève encore les conneries que t'as écrit dedans et c'est bon.
-+- JB in <http://www.le-gnu.net> : Le neuneuttoyage par le vide -+-
|
|
| Back to top |
|
 |
Benoit Dejean Guest
|
Posted: Sat Jun 28, 2003 9:41 pm Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
Le Sat, 28 Jun 2003 14:52:27 +0000, Jujubond001 a ecrit:
| Quote: | Bonjour à tous,
Voila, jsui entrain d'écrire un programme où j'ai besoin d'ouvrir et
de fermer un grand nombre d'images. Il est donc vitale de les supprimer
apres utilisation. Le problème, c'est que j'ai toujours cru qu'en
utilisant la commande "delete" sur un objet, ça le supprimer et
l'enlever de la mémoire mais ça n'a pa l'air d'être le cas. Grace à
Windows XP, on peut savoir la taille prise par les applications, la
mienne dépasse les 200Mo !! heuresement que j'en ai assez mais apres je
dois le mettre sur un PC avec bcp moins de RAM.
Jé essayé de mettre de plein de commande deffacement mé rien n'y
fait.
 |
opérateur
| Quote: | Alors voila mon code :
//-- déclaration
Graphics::TBitmap *image= new Graphics::TBitmap(); //-- traitement--
// (...)
//-- Libération de la mémoire
image->FreeImage();
image->Dormant();
image->ReleaseHandle();
delete(image);
|
parenthèses inutiles
| Quote: | Connaissez-vous la solution ??
merci d'avance.
Jujubond.
|
Sans parler de la gestion de la mémoire de ton système, tu es sur de ne
pas avoir de fuite de mémoire ailleurs?
--
Ne perdez pas de vue qu'un programme qui plante est d'une utilité quasi nulle,
ce qui est loin d'être incompatible avec la notion d'Art.
|
|
| Back to top |
|
 |
Jujubond001 Guest
|
Posted: Sat Jun 28, 2003 9:49 pm Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
une fuite de mémoire ? ben nan jsui sûr que ça vient des images lors du premier
chargement, le programme l'a stocke sous le format bitmap. La place utilisée
dans la RAM correspond à la quantité des images chargé.
|
|
| Back to top |
|
 |
Benoit Dejean Guest
|
Posted: Sat Jun 28, 2003 10:02 pm Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
Le Sat, 28 Jun 2003 21:49:02 +0000, Jujubond001 a ecrit:
| Quote: | une fuite de mémoire ? ben nan jsui sûr que ça vient des images lors
du premier chargement, le programme l'a stocke sous le format bitmap. La
place utilisée dans la RAM correspond à la quantité des images
chargé.
|
oui, mais est ce que tu es sur de __tout__ libérer dans ton destructeur
de classe?
--
Ne perdez pas de vue qu'un programme qui plante est d'une utilité quasi nulle,
ce qui est loin d'être incompatible avec la notion d'Art.
|
|
| Back to top |
|
 |
Jujubond001 Guest
|
Posted: Sun Jun 29, 2003 9:01 am Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
ben jvous avais deja donné mon code sur le post précédent.
Sinon là jvien d'alleger enormément la taille alloué, puique en faite je
declare l'objet bitmap au debut de la fonction au lieu de le faire à chaque
image. Jvé peutêtre faire mieu, jvé le déclarer en globale. jrevien vous dire
ça fait.
Mon code :
//declaration
Graphics::TBitmap *img = new Graphics::TBitmap();
//traitement
//(...)
//suppression
img->Dormant();
img->FreeImage();
delete img;
|
|
| Back to top |
|
 |
Jujubond001 Guest
|
Posted: Sun Jun 29, 2003 9:15 am Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
quand je fé la declaration et l'initialisation en globale, le programme ne fé
plus 15Mo maximun en mémoire, il doit prendre la taille de la plus grande image
sans doute.
|
|
| Back to top |
|
 |
Vincent Lascaux Guest
|
Posted: Sun Jun 29, 2003 10:44 am Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
| Quote: | quand je fé la declaration et l'initialisation en globale, le programme
ne fé plus 15Mo maximun en mémoire, il doit prendre la taille de la
plus grande image sans doute.
donne le code de ton constructeur et de ton destructeur, par ce que la on
avance pas
|
A mon avis, c'est pas de lui les classes du namespace Graphics.
Si c'est de la MFC (comme je le pense), le bon forum est
fr.comp.os.ms-windows.programmation
|
|
| Back to top |
|
 |
M.B. Guest
|
Posted: Sun Jun 29, 2003 11:19 am Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
C'est pas de la MFC.
MB
"Vincent Lascaux" <nospam (AT) nospam (DOT) org> a écrit dans le message news:
3efec2fa$0$11527$626a54ce (AT) news (DOT) free.fr...
| Quote: |
A mon avis, c'est pas de lui les classes du namespace Graphics.
Si c'est de la MFC (comme je le pense), le bon forum est
fr.comp.os.ms-windows.programmation
|
|
|
| Back to top |
|
 |
Arnaud Debaene Guest
|
Posted: Mon Jun 30, 2003 10:25 am Post subject: Re: libération de la mémoire prise par un bitmap |
|
|
[email]jujubond001 (AT) aol (DOT) com[/email] (Jujubond001) wrote in message news:<20030628105227.23552.00001017 (AT) mb-m27 (DOT) aol.com>...
| Quote: | Bonjour à tous,
Bonjour.
Voila, jsui entrain d'écrire un programme où j'ai besoin d'ouvrir et de fermer
un grand nombre d'images. Il est donc vitale de les supprimer apres
utilisation. Le problème, c'est que j'ai toujours cru qu'en utilisant la
commande "delete" sur un objet, ça le supprimer et l'enlever de la mémoire mais
ça n'a pa l'air d'être le cas. Grace à Windows XP, on peut savoir la taille
prise par les applications, la mienne dépasse les 200Mo !! heuresement que j'en
ai assez mais apres je dois le mettre sur un PC avec bcp moins de RAM.
HS |
Et comment est-ce que tu vois cette fuite, avec quel outil? Le "Task
Manager" (ou n'importe quel outil au niveau systeme d'ailleurs) ne
peut pas etre utilise pour ca car la CRT ne redonne pas la memoire que
tu libere a l'OS mais la garde en cache pour la reutiliser
</HS>
Pour plus de details, un groupe specifiaue a ton environement
(Borland?) sera tout indique.
Arnaud
PS : Pardon pour les accents, je suis sur un clavier QWERTY.
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|