この人頭いいなと思ったエピソード

.NET C++/CLIのガーベジコレクションについて

.NET C++/CLIで、マネージピープの配列をネイティブDLLにポインタ引数として渡す動作で、
配列が正常に渡っていることは確認したのですが、ネイティブDLL側で配列の処理をしている最中に、
ガーベジコレクションが起こり、誤動作することはあるのでしょうか。

ちなみに、マーシャリングは以下のように行いました。

// マネージ側コード
[DllImport("native.dll")] void ArraySet( [MarshalAs(UnmanagedType::LPArray)] array <int> ^ Data );

array <int> ^ Data = gcnew array <int>(64);

ArraySet( Data ); // この中で配列の処理中にガーベジコレクションが起こると誤動作?

A 回答 (1件)

nativeに渡して処理してもらってる間、pin_ptrでピン留めしておくのが常道かと。

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2010/10/07 09:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!