Forum Clubic

[C++] Librairie FreeImage libération de memoire

Bonjour,

J’utilise la librairie FreeImage dans mon prog sous Borland C++, et disposan de plusieur images, je les ai mise dans un tableau declarer comme ceci :

  
FIBITMAP **tabImage; 
tabImage=new FIBITMAP *[nbImages]; 

je charge mes image ensuite comme cela :

 
tabImage[i] = FreeImage_Load(FIF_JPEG, ListeFichiers->Strings[i].c_str(), JPEG_DEFAULT); 
 

comme j’ai beaucoup d’images qui se stockent en memoire cela me prend enormement de place en memoire plus de 500 mo suivant les images de depart.Par consequent, il faut que je libere la mémoire a la fin, c la ou est le problème.
J’ai beau faire :

  
for(size_t i=0; i<nbImages; ++i) 
    FreeImage_Unload(tabImage[i]); 
delete [] tabImage;

J’ai toujours autant de memoire utilisé. Comme je voudrai utiliser le programme plusieur fois a la suite sans quitter pouis relancer, il faudrai un moyen de liberer corectement la memoire car une fois que toute la memoire est utilisé , le prog swappe et ca ralenti les perf…

Merci de votre aide!

Euh … je ne vois pas d’erreur dans ton code, tu peux éventuellement nullifier chaque dibs dans la boucle de libération de la mémoire de chaque élément.
Je ne vois rien d’autre :??:

PS : comment vérifies tu la libération de la mémoire ? Le fait que ton PC swap ne veut pas forcément dire que rien n’est libéré, utilise un tool comme Taskinfo ou VTune pour vérifier que la libération est effective.

Pour l’instant j’utilise le gestionnaire de tache de windows pour verifier la memoire utilisée. Je vais essayer de mettre les dibs a null mais je doute…

Je vien d’essayer, mais rien n’y change, la memoire est toujours utilisé.
Comme je voudrai l’utiliser plusieur fois a la suite, la memoire se rempli et apres sa swappe. Mais ce qui est bizarre, c que dès que je ferme le prog c bon , la memoire se libere… :s

Ce que tu peux faire, c’est ajouter les sources de FreeImage dans ton projet pour debugger et voire ce qu’il se passe.