难道这个问题要等yysun老师出手才能解决?关于MSXML内存泄漏的问题(200分)

N

ncuwk

Unregistered / Unconfirmed
GUEST, unregistred user!
在Builder6中导入了MSXML4 SP2。
源代码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
CoInitialize(NULL);
Msxml2_tlb::IXMLDOMDocument2Ptr ptempXMLDoc;
ptempXMLDoc = CoFreeThreadedDOMDocument40::Create();
ptempXMLDoc->async = VARIANT_FALSE;
short loadedSuccessful;
ptempXMLDoc->load(TVariant("XmlStructure_v12_1.xml"),&loadedSuccessful);
int i,j;
for(i=0;i<10000;i++)
{
if(ptempXMLDoc->documentElement->hasChildNodes())
for(j=0;j<ptempXMLDoc->documentElement->childNodes->length;j++)
;
}
ptempXMLDoc.Release();
CoUninitialize();
}
XmlStructure_v12_1.xml文件大小只有800个字节。
每按一下button内存消耗5M。
程序退出时所有内存正常释放。
如果将for循环中的
if(ptempXMLDoc->documentElement->hasChildNodes())
for(j=0;j<ptempXMLDoc->documentElement->childNodes->length;j++)
去掉,每次按button内存均不增加。
我查了一下资料,好像和MSXML garbage collection相关,但不知道这么办。
我写了个服务程序,需要长时间的运行,这样的内存泄漏吃不消。
请大侠出手相救!
救救这个快崩溃的人。
 
顶部