佚名通过本文主要向大家介绍了把临时字符串传给一接受BSTR参数的方法,方法中需不需要释放参数内存?详情请进等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 把临时字符串传给一接受BSTR参数的方法,方法中需不需要释放参数内存?详情请进
描述:
解决方案1:
描述:
方法声明:HRESULT ABC(BSTR bstr);
调用:pInterface->ABC(L"wu la la wu la la...");
ABC中是否需要调用::SysFreeString(bstr);?
解决方案1:
pInterface->ABC(L"wu la la wu la la...");不需要Free,是因为L"wu la la wu la la..."相当于在栈中定义了一个字符数组unsigned short [n],系统自动把首地址作为参数传给接口函数,退出时自动回收;
pInterface->ABC(T2OLE("wu la la wu la la..."));要释放,是因为你调用了宏T2OLE,这个宏实际上调用了动态内存分配函数alloca,并将其结果作为实参,系统只管这个实参,管不了堆中的内存,所以泄漏。
好比pInterface->ABC(unsigned short a[])和pInterface->ABC(new unsigned short[])的区别