如何解决BSTR泄漏内存com对象?

时间:2011-07-10 09:34:38

标签: c++ visual-c++

起初我的英语不好。

我正在使用Microsoft ISA Server 2006 c ++编程SDK。

我通过需要BSTR变量的isa函数从Isa服务器获取信息,但它会导致内存泄漏,并且使用::sysFreeString(BSTR)它无法解决内存泄漏问题。 我该怎么办?

FPCLib::IFPCLogEntryPtr::get_ClientIP(BSTR *);

1 个答案:

答案 0 :(得分:1)

默认情况下,运行时库会缓存COM BSTR值,这可能会导致泄漏的出现。即使您自己的代码没有泄漏,堆大小仍然会增长 - 非常烦人。

如果您想将此作为原因进行排除,则可以使用SetOaNoCache API禁用。

如果您在执行此操作后仍有明显泄漏,则可以使用Process Dumper跟踪它以获取连续快照,然后再次运行以进行比较。如果可能的话,对你的Debug版本运行它,因为在这种情况下,callstacks更容易解密。