gpt4 book ai didi

c - MSXML 内存处理中的问题

转载 作者:行者123 更新时间:2023-11-30 17:51:47 24 4
gpt4 key购买 nike

我有一个应用程序,用于使用 dll 中的一些遗留代码来测试制造的产品。该应用程序可以针对不同的产品进行设置。设置是通过 xml 文件完成的,并且可以(并且将会)在运行时(即批处理结束时)进行更改。 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 对象?

最佳答案

好的,找到答案了。可以使用 CA_DiscardObjHandle() 释放 MSXML6_* 对象。

关于c - MSXML 内存处理中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com