0
BSTR newID_x = SysAllocString(L"newID");
BSTR newX_x = SysAllocString(L"newX");

functionA(&newID_x);

//Func A does some operation on newID_x, we have that value in newID_x now

functionA(&newX_x);
//After Func A is called for the second time, both newID_x and newX_x become the same
//i.e, both are pointing to same locations and hence values too

我的问题是,BSTRs 的行为是否正确,我们是否需要在第一次调用后保存newX_x一些新的?BSTRfunctionA

或者functionA它可能是错误地分配/取消分配传递BSTR的 s.

4

1 回答 1

0

您所描述的是“进出”参数语义-参数在调用之前被初始化,然后在调用中它被更改并且调用者可以看到更改。可以接受,但是有这样的界面不是很方便。在这种情况下,被调用者必须重新分配BSTR,然后将所有权传递给调用者。

于 2011-06-10T06:53:21.997 回答