关于MSXML4内存泄漏!等着您救命!(200分)

  • 主题发起人 主题发起人 ncuwk
  • 开始时间 开始时间
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相关,但不知道这么办。
我写了个服务程序,需要长时间的运行,这样的内存泄漏吃不消。
请大侠出手相救!
 
谁告诉我怎么正确释放MSXML4,
我给1000分。
老大,我支持不住了。
痛哭。。。。。。
 
后退
顶部