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

How to solve BSTR leak memory com object?

本文关键字:泄漏 内存 com 对象 BSTR 何解决 解决      更新时间:2023-10-16

我英语不好的第一个借口。

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

我从Isa服务器的Isa函数,需要BSTR变量的信息,但它使内存泄漏,并通过使用::sysFreeString(BSTR)它不解决内存泄漏。我该怎么做?

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

默认情况下,COM BSTR值由运行时库缓存,随着时间的推移可能会出现泄漏。即使你自己的代码没有泄漏,堆大小仍然会增长——非常烦人。

如果你想排除这个原因,你可以禁用SetOaNoCache API。

如果在这样做之后仍然有明显的泄漏,您可以使用Process dump来跟踪它以获得连续的快照,然后再次运行它以比较它们。如果可能的话,在Debug构建中运行此命令,因为在这种情况下,调用栈更容易破译。