2012-01-02 40 views
0

1つのDLLで初期化されるリンクリスト(要素へのポインタと次のノードへのポインタを保持する)へのグローバルポインタを使用しています。このグローバル変数は、異なるDLL(共有オブジェクト)間で共有されます。異なる共有ライブラリ間で使用されるグローバル変数

システムがグローバルリストになると、システムは初期化され、すべてのDLLはリストの値を持ちます。後でシステムが動作している間に、あるDLL(x.soと言う)がメモリを削除してリスト全体を再初期化し、他のDLL(y.soと言う)が値を読み込もうとすると、何故このことが起こっているのか、この問題からどのように克服すべきか?

ヒープ領域がDLL全体で共有されていると、私はこの問題に直面している理由がわかりません。どんな助けにも感謝します。

答えて

0

ヒープは、同じプロセス内のDLL間で共有されますが、プロセスによって異なるヒープがあります。異なるプロセスにロードされるDLL内にグローバル変数があるようです。これは、何らかの形のプロセス間通信なしでは共有できません。

+0

ありがとう、返信ありがとうございますが、変数の値を保持している別のdllで1つのプロセスしか実行されていないことが恐れられます。 – user1126078

+0

その場合、コードが再初期化されています –

関連する問題