使用MSXML进行内存处理时出现的问题

时间:2013-05-13 06:22:00

标签: c msxml msxml6 cvi

我有一个应用程序,用于在dll中使用一些遗留代码测试编造产品。可以为不同的产品设置应用程序。设置是通过xml文件完成的,并且可以(并且将)在运行时期间更改,即在Lot-Of-Lot。 xml的处理由提到的遗留dll完成。

经过较长时间(几天到几周)后,我注意到内存占用增加。调试到那个,我可以跟踪(可能)泄漏到DLL。在得到消息来源之后,我可以进一步调查,直到我发现这样的事情:

CAObjHandle doc;
MSXML6_NewDOMDocument40IXMLDOMDocument2(0, 0, LOCALE_NEUTRAL, 0, &doc);
[...]
MSXML6_IXMLDOMDocument2load(doc, 0, vtPath, &success);

在我看来,每次都会调用它,一个新的开始。这是doc结构,似乎存在于内存中。我找不到任何被释放的地方。

毕竟,dll有很多小漏洞,都来自未释放的对象(CVI函数)。我修复了那些,但我不知道,如何释放这个MS-Objects。我遇到了这个问题:Understanding the MSXML garbage collection mechanism,但在我使用ANSI-C代码后,我不确定如何处理GC以及它是否有效。

有没有办法手动释放MSXML-Objects?

1 个答案:

答案 0 :(得分:0)

好的,找到了答案。可以使用MSXML6_*取消分配CA_DiscardObjHandle()个对象。