我为非托管C++库制作.Net包装器。我需要使用此签名的函数:
BOOL Func ( float *OUT floatArray)
我在托管C++中尝试过这个:
float* mp = new float(10);
bool what = Func(mp);
但是我得到了一个访问违规异常。(尝试读取或写入受保护的内存。这通常表示另一个内存已损坏。怎么了?
这是我在托管C++中的函数:
bool MyFunc (array<Single>^% floatArray)
我正在尝试使用此函数返回 C# float[]。也许还有另一种选择来完成我的任务。
将
C++中分配(new'ed)的一大块非托管内存返回到 C# 在几个方面似乎是一个相当糟糕的主意(谁负责释放(删除[]'ing)内存? 如果您C++中使用 System::Array 并通过"ref"传递值(在 c# 中),我怀疑会更好。