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++ で割り当てられた (新しく作成された) アンマネージ メモリのチャンクを C# に返すことは、いくつかの面でかなり悪い考えのように思えます (メモリを解放 (削除) する責任があるのは誰ですか? C++ で System::Array を使用し、'ref' を介して (c# で) 値を渡しました。

于 2013-09-28T16:55:51.523 に答える