重新定位作为参数传递的指针
Relocate pointer passed as a parameter
我有一个将单个unsigned char*
作为参数的方法。
int MyClass::MyMethod(unsigned char* resultArray)
该参数由外部 .NET 应用程序分配并传递,但该值应根据结果进行更改。
在方法的主体中,我调用以类似方式返回数组的第三方 API。
ThirdPartyAPI::GetResult(result);
int size = result.GetSize();
unsigned char* temp = new unsigned char[size];
result.GetData(temp);
现在,我的 temp 变量是一个填充数组,其中包含我需要返回到 C# 的结果。我该怎么做? 我尝试了简单的resultArray = result
但这只返回一个空数组。由于 C# 应用程序无法在调用我的方法之前知道大小,因此必须将其初始化为随机长度或以空形式发送并在我的方法中调整大小。 因此,如果我能像resultArray = new unsigned char[size]
这样的东西来调整它的大小,那么我可以避免复制,但这会引发异常。
实现这一目标的最佳方法是什么?
如果你对方法签名有发言权,那么把你的函数改成这个
int MyClass::MyMethod(unsigned char** resultArray)
然后你可以做
*resultArray = result;
要调用此方法,您现在必须传递指针的地址,而不仅仅是指针
MyClass m;
char *str;
m.MyMethod(&str);
替代解决方案
char* MyClass::MyMethod(int *status);
使用此签名,您只需返回字符串并修改 int 参数以包含调用的状态
MyClass m;
int status;
char *str = m.MyMethod(&status);
if (status == 0) {}
相关文章:
- 使用指向成员的指针将成员函数作为参数传递
- 修改函数中的指针(将另一个指针作为参数传递)
- 将成员函数指针作为参数传递给模板方法
- 使用引用与指针将数组作为参数传递
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 如何在不使用指针的情况下将派生类的对象作为参数传递给基类中的函数?
- 将函数指针数组中的函数指针作为模板参数传递
- 无法将指向类的成员函数的函数指针作为参数传递给同一类的另一个成员函数
- 如何将指针变量作为引用参数传递?
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- Qt5 - 如何将"QList<T> *"指针作为信号参数传递,并在完成后将其删除?
- C++将指向成员的指针作为模板参数传递
- 通过引用函数传递指针参数是什么意思?
- C++ 将派生类的成员函数指针作为参数传递时选择了错误的模板专用化
- 将函数指针作为函数参数传递的目的
- 将派生类作为参数传递给方法,该方法是具有智能指针的基类
- 使用 C++11 将指向成员函数的指针作为参数传递
- 如何在程序集函数中将元素数组作为参数传递时转发 ARM 寄存器的地址指针
- 在一行中将默认类型值上的指针作为参数传递
- 将双指针作为参数传递给需要引用 std::vector <double>的函数