Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

3 réponses
Avatar
jujubond001
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.

3 réponses

Avatar
Vincent Richard

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 -+-

Avatar
Benoit Dejean
Le Sat, 28 Jun 2003 14:52:27 +0000, Jujubond001 a ecrit:

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


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


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.

Avatar
adebaene
(Jujubond001) wrote in message news:...
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.