1

我有这样的功能:

bool Function (BSTR paramter1, BSTR parameter2)
{
    // My Code
}

我这样称呼:

Function(SysAllocString(L"Example1"), SysAllocString(L"Example2"));

我的理解是我分配的东西SysAllocString必须用SysFreeString.

BSTR似乎是引擎盖下的 typedeftypedef OLECHAR *BSTR;

由于这是一个指针,只要我添加我应该没问题

SysFreeString(parameter1);
SysFreeString(parameter2);

在里面Function,不要命名BSTRs。

我在这里的所有推理是否正确,只要我添加这两行,我就不会内存泄漏?我还有很多东西要学。非常感谢您的宝贵时间。

4

1 回答 1

4

是的,你是对的。但这通常不是设计软件的合适方式。通常,释放对象的责任归于分配它的例程或一些相关例程。您应该能够Function使用不需要立即释放的参数进行调用,或者使用在本地声明而不是在堆上分配的参数进行调用。

于 2012-09-01T09:51:04.323 回答