2

いくつかのレガシーコードの問題をデバッグしようとしています。私が見ているものを理解しようとしているときに、を使用して2つの固有の共有メモリスペースを構築していることがわかりましたftok。私はそれが何をするかを見るためにオンラインで調べました、そして私はこのリンクに出くわしました。深く調べてみると、ftok一意のキーが保証されておらず、スペースが衝突する可能性がわずかにあることがわかりました。

ftok()の衝突

だから、私はこれが私に当てはまるかどうかを判断しようとして立ち往生しています。それが本当に共有メモリ空間の衝突の問題であるかどうかを判断するにはどうすればよいですか?従来の実行可能ファイルでは、ひどいメモリリークになる可能性があります...

4

1 に答える 1

0

本当に共有メモリ空間の衝突の問題かどうかを判断するにはどうすればよいですか?

簡単:ftok()実際のコードと同じパラメーターを使用して呼び出し、ints返された 2 つの値が等しいかどうかを比較します。

返されたキーが一意である限り、生成された共有メモリ空間にも衝突はありませんか?

キーが異なる限り、2 つのメモリ セグメントは完全に独立しています。

アプリケーションは、必要な2 つのセグメントに任意の値を自由に配置できます。アプリケーションが、例えばセグメント 2 の値を指すセグメント 1 に値を入れたい場合、すべての参照をまっすぐに保つのはアプリケーション次第です。

于 2011-11-20T23:08:41.683 に答える