0

マネージ/アンマネージ コードを含むプロジェクトがあります。

マネージド コード: C#--- ビジネス ロジックを処理する

マネージド コード: C++-- C# と C (アンマネージド コード) 間のアダプターとして

アンマネージ コード: c/c++ ---エンコード/デコード ロジックの処理

したがって、[マーシャル操作] がたくさんあります。私のコードは次のとおりです。

void fun(ManagedObject^ managedObj)
{
marshal_contex^ context = gcnew marshal_context();
const char* str = context->marshal_as<const char*>(managedObj->stringField);
//then call the c function,pass the str param to it
c_fun((u_char *)str);
}

ps: fullpageheap検証を有効にすると、c_funがスローされViolate read exception、ダンプ ファイルを確認すると、「str」が無効なアドレスを指しています。

どうしてか分かりません?フルページヒープの問題ですか?または元帥オブジェクトが移動されますが、誰によって?

4

0 に答える 0