[Dcmlib] Amélioration des Memory leak

Eric Boix Eric.Boix at creatis.insa-lyon.fr
Wed Nov 17 14:58:28 CET 2004


	Bonjour a tous, (PS: j'aurais du ecrire en anglais!)

Quoting Jean-Michel Rouet <jm.rouet at noos.fr>:
> La fonction SetImageData est tres dangereuse !
> La zone mémoire correspondant a compressed, qui normalement est allouée
> par PixelConverter ne devrait etre mise a jour que par PixelConverter.

OK, je bat ma coulpe. Je ne suis pas alle' au bout du nettoyage de
File::Pixel_Data, qui pour des raisons historiques contenait trois
choses possibles:
 1/ l'image decompresse'e (RGB ou non, cela depend du fichier)
 2/ l'image RGB, dans le cas ou l'image possede des LUTS
 3/ l'image de l'utilsateur passe'e par SetImageData
le tout "orchestre'" a la vole'e par le flag File::PixelRead sense'
decrire ce que contient Pixel_Data (beuark).

J'ai donc commence' a reecrire cela en introduisant la classe PixelConvert,
dont les membres de base sont
   PixelConvert::Decompressed (contenant l'image decompresse'e RGB ou non
                               suivant le fichier) i.e. le cas 1 de Pixel_Data
   PixelConvert::RGB (contenant l'image RGB en interpretant les LUTS, si
                      il y en a) i.e. le cas 2/ de Pixel_Data.

J'aurais du aller jusqu'au bout et creer
   PixelConvert::UserImage destine'e a traduire le cas 3/ de Pixel_Data
et ce afin de clore le pb des collisions. Je pense que le jour
ou File::Pixel_Data et son odieux compe`re File::PixelRead, les choses
seront nettement plus claires.

Malheureusement, je me suis heurte' au gdcmFile::Write* qu'il faut 
auparavant nettoyer avant de pouvoir creer PixelConvert::UserImage et
de clore le probleme. Le but du jeu est bien entendu de ne JAMAIS
toucher au BinEntry du tag des pixels (afin d'eviter les collisions)
et que les File::Write* aillent chercher la bonne representation dans
PixelConvert au moment de l'ecriture.

Voila. Desole' de ne pas avoir clos le pb faute de temps.
Benoit semble vouloir nettoyer la partie File::Write* dans un avenir
proche. Je ne suis pas certain que l'introduction de PixelConvert::UserImage
puisse se faire de fac,on decouple'e, tant l'entropie est encore grande
dans File::.

	Eric.



More information about the Dcmlib mailing list