私はいくつかのメモリ割り当てを実行し、ポインタを返すDLLを使用しています。 コードのようなものです:nullポインタを返すDLL内のメモリ割り当て
ObjectClass *obj = FunctionFromDLL();
obj
は有効なポインタですが、obj->SubObject
は私がチェック悪いポインタ(0xcdcdcd) で、FunctionFromDLL()
が正しくSubObject
を割り振る機能がに戻っているとき、このポインタは、唯一の悪い値を取得します発信者。
DLLにメモリを「共有」するための特別なものがありますか?
メモリを共有するためにDLLで特別な処理を行う必要はありません。 DLLは同じアドレス空間に存在します。あなたの問題は他のものです。 DLLの境界を越えてC++オブジェクトを渡そうとしていますか?これは、両端で同じコンパイラを使用し、 'dllexport' /' dllimport'を使用しない限り動作しません。私たちが助けることができるようになる前に、もっと教えてください。 –
エクスポートされたDLL関数は__declspec(dllexport)を実行しており、インポートされた.hファイルで__declspec(dllimport)を使用しています。 両方のプロジェクトは、同じVisual Studioを使用してコンパイルされます。 – Guillaume
追加しません。あなたがまだ私たちに語っていないものでなければなりません。初期化されたメモリは、モジュール境界を通過するときに初期化されません。 –