[Dcmlib] fuite mémoire dans gdcm
Mathieu Malaterre
Mathieu.Malaterre at creatis.insa-lyon.fr
Fri Aug 29 11:37:08 CEST 2003
Salut,
J'essaie de corriger quelques fuites mémoire dans gdcm mais j'ai un
petit problème:
Valgrind me rapporte ca:
==16844== 866840 bytes in 43342 blocks are definitely lost in loss
record 8 of 10
==16844== at 0x4002868C: __builtin_new (vg_replace_malloc.c:172)
==16844== by 0x402BB814: gdcmHeader::NewElValueByNumber(unsigned
short, unsigned short) (gdcmHeader.cxx:1061)
==16844== by 0x402BC301: gdcmHeader::ReadNextElement(void)
(gdcmHeader.cxx:1189)
==16844== by 0x402BE9ED: gdcmHeader::ParseHeader(bool)
(gdcmHeader.cxx:1620)
Le code correspondant est:
gdcmElValue* gdcmHeader::NewElValueByNumber(guint16 Group, guint16 Elem) {
// Find out if the tag we encountered is in the dictionaries:
gdcmDictEntry * NewTag = GetDictEntryByNumber(Group, Elem);
if (!NewTag)
NewTag = new gdcmDictEntry(Group, Elem);
gdcmElValue* NewElVal = new gdcmElValue(NewTag);
if (!NewElVal) {
dbg.Verbose(1, "gdcmHeader::NewElValueByNumber",
"failed to allocate gdcmElValue");
return (gdcmElValue*)0;
}
return NewElVal;
}
Le problème c'est qu'il n'est pas immédiat de savoir quand il faut faire un:
delete NewTag
De meme dans le destructeur de gdcmElValue, je ne sais pas comment
savoir si je dois détruire le membre 'entry':
Est-ce qu'un developpeur pourrait m'aider ?
merci,
mathieu
More information about the Dcmlib
mailing list