C++ サーバーと通信する C++ ライブラリ アプリがあり、カスタム クラス オブジェクトのベクトルを作成しています。しかし、私の Cpp/CLI コンソール アプリ (ネイティブ C++ と対話する) は、カスタム クラスの obj ベクトルを返そうとすると、メモリ違反エラーをスローします。
コードサンプル -
私のネイティブ C++ クラスでは -
std::vector<a> GetStuff(int x)
{
-- do stuff
std::vector<a> vec;
A a;
vec.push_back(a);
--- push more A objs
return vec;
}
私のCpp/CLIクラスで
public void doStuff()
{
std::vector<a> vec;
vec = m_nativeCpp->GetStuff(4); // where nativeCpp is a dynamically allocated class in nativecpp DLL, the app throws up a memory violation error here!
}
正確なエラーメッセージ
タイプ 'System.AccessViolationException' の未処理の例外が CLIConsole.exe で発生しました -- これは私のコンソール cpp/CLI プロジェクトです
追加情報: 保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています。