这是内存泄漏吗?(C++BSTR)

Is this a memory leak? (C++ BSTRs)

本文关键字:C++BSTR 内存 泄漏      更新时间:2023-10-16

我有一个这样的函数:

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

我这样称呼它:

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

我的理解是,我用SysAllocString分配的内容必须用SysFreeString释放。

BSTR似乎是typedef OLECHAR *BSTR; 罩下的一个typedef

由于这是一个指针,只要我添加,我就可以了

SysFreeString(parameter1);
SysFreeString(parameter2);

Function内部,不要将BSTR命名为

我所有的推理都正确吗?只要加上这两行,我就不会漏记忆了?我还有很多东西要学。非常感谢您抽出时间。

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