マネージ/アンマネージ コードを含むプロジェクトがあります。
マネージド コード: 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」が無効なアドレスを指しています。
どうしてか分かりません?フルページヒープの問題ですか?または元帥オブジェクトが移動されますが、誰によって?