C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

libération de la mémoire prise par un bitmap

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Jujubond001
Guest





PostPosted: Sat Jun 28, 2003 2:52 pm    Post subject: libération de la mémoire prise par un bitmap Reply with 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. :-(

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





PostPosted: Sat Jun 28, 2003 7:57 pm    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote



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





PostPosted: Sat Jun 28, 2003 9:41 pm    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote



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.
Sad


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





PostPosted: Sat Jun 28, 2003 9:49 pm    Post subject: Re: libération de la mémoire prise par un bitmap Reply with 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é.
Back to top
Benoit Dejean
Guest





PostPosted: Sat Jun 28, 2003 10:02 pm    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote

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





PostPosted: Sun Jun 29, 2003 9:01 am    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote

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





PostPosted: Sun Jun 29, 2003 9:15 am    Post subject: Re: libération de la mémoire prise par un bitmap Reply with 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.
Back to top
Vincent Lascaux
Guest





PostPosted: Sun Jun 29, 2003 10:44 am    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote

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





PostPosted: Sun Jun 29, 2003 11:19 am    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote

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





PostPosted: Mon Jun 30, 2003 10:25 am    Post subject: Re: libération de la mémoire prise par un bitmap Reply with quote

[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
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.