查看单个帖子
旧 2009-05-07, 03:51 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】several Memory Leaks While Traversing Oddbdata

several memory leaks while traversing oddbdatabase
several memory leaks while traversing oddbdatabase
i have got several memory leaks while traversing oddbdatabase
in the following way:
void
traverseentities()
{
oddbblockreferenceptr zeroptr;
traverseblockreference(zeroptr);
}
traverseblockreference(oddbblockreferenceptr pblockreference)
{
oddbobjectid blockid;
if (pblockreference.isnull())
blockid = m_db->getmodelspaceid();
else
blockid = pblockreference->blocktablerecord();
oddbblocktablerecordptr pblock = blockid.openobject();
oddbobjectiteratorptr pentiter = pblock->newiterator();
for (; !pentiter->done(); pentiter->step()) {
oddbentityptr ntt = pentiter->entity();
if (!ntt.isnull())
traverseentity(callback, ntt);
}
if (!pblockreference.isnull()) {
oddbobjectiteratorptr pattriter = pblockreference->attributeiterator();
for (; !pattriter->done(); pattriter->step()) {
oddbentityptr ntt = pattriter->entity();
if (!ntt.isnull())
traverseentity(callback, ntt);
}
}
}
void
traverseentity(oddbentityptr pentity)
{
if (pentity->iskindof(oddbblockreference::desc())) {
oddbblockreferenceptr pblockreference = pentity->queryx(oddbblockreference::desc());
traverseblockreference(callback, pblockreference);
return;
}
oddbdimensionptr pdimension = pentity->queryx(oddbdimension::desc());
if (!pdimension.isnull()) {
//traversedimension(pdimension);
return;
}
if (pentity->isaproxy()) {
//traverseproxy(pentity);
return;
}
entity(pentity);
}
void entity(oddbentityptr pentity)
{
oddblineptr pline = pentity->queryx(oddbline::desc());
if (!pline.isnull()) {
traverseline(pline);
return;
}
}
and so on...
may be it is an erroneous approach to traverse entities.
have any idea what is wrong?
thanks
it would be helpful if you could send us some code that we can compile (perhaps a modified version of odreadex) and test, to see if we can reproduce this problem.
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)