查看单个帖子
旧 2009-05-06, 05:38 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】memory leaks or my error in queryx function

memory leaks or my error in "queryx" function?
memory leaks or my error in "queryx" function?
memory leaks in "queryx" function or my error?
i use odamfcappdll with visual studio 6.
for to see the problem you can modify the funcion oneditacisconversion()
if (!pnewobj.isnull())
{
// test memory lek
if (((oddbentityptr )pnewobj)->iskindof(oddbpolyfacemesh::desc()))
{
oddbpolyfacemeshptr ppoly = ((oddbentityptr )pnewobj);
oddbobjectiteratorptr piter = ppoly->vertexiterator();
for (; !piter->done(); piter->step())
{
oddbpolyfacemeshvertexptr pvertex = piter->entity()->queryx(oddbpolyfacemeshvertex::desc());
}
}
// end test
pent->handoverto(pnewobj);
}
you can read the attach file called "region.dwg". when you exit from application several memory leak appear. it is a my error in use of queryx?
thank's for help.
attached files
how can i obtain vertex and face of polyfacemesh without use queryx?
try next code - in this case no memory leak
// test memory lek
if (((oddbentityptr )pnewobj)->iskindof(oddbpolyfacemesh::desc()))
{
oddbpolyfacemeshptr ppoly = ((oddbentityptr )pnewobj);
oddbobjectiteratorptr piter = ppoly->vertexiterator();
for (; !piter->done(); piter->step())
{
oddbentityptr pentity = piter->entity();
if (pent->iskindof(oddbpolyfacemeshvertex::desc()))
{
oddbpolyfacemeshvertexptr pvertex = piter->entity();
}
if (pent->iskindof(oddbfacerecord::desc()))
{
oddbfacerecordptr precord = piter->entity();
}
if (pent->iskindof(oddbsequenceend::desc()))
{
oddbsequenceendptr psqend = piter->entity();
}
}
}
// end test
great!your code work fine without memory leak. it is only change pent with pentity.
is it a good idea change code in class oddbpolyfacemesh_dumper in example odreadexdll and odreadex?
thanks a lot
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)