0

我为非托管 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[]。也许还有另一种选择来完成我的任务。

4

1 回答 1

1

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

于 2013-09-28T16:55:51.523 回答