托管C ++将float * OUT作为参数传递

时间:2013-09-28 14:46:41

标签: c# c++ unmanaged managed

我为非托管C ++库制作.Net包装器。我需要使用带有此签名的函数:

BOOL Func ( float *OUT floatArray)

我在托管C ++中试过这个:

float* mp = new float(10);
bool what = Func(mp);

但是我得到了一个AccessViolationException。 (尝试读取或写入受保护的内存。这通常表示其他内存已损坏。) 怎么了?

这是我在托管C ++中的功能:

bool MyFunc (array<Single>^% floatArray)

我正在尝试使用此函数返回C#float []。也许还有其他选择可以完成我的任务。

1 个答案:

答案 0 :(得分:1)

将C ++中分配(new'ed)的一大块非托管内存返回给C#在几个方面似乎是一个相当糟糕的主意(谁负责释放(删除[])内存?我会怀疑如果你在C ++中使用System :: Array并通过'ref'传递值(在c#中),那就更好了。