私はいくつかのプログラムを作成しましたが、64ビットでコンパイルすると、メモリマッピングセグメント(たとえば、共有オブジェクトと共有メモリが保持される場所)は常に7f9aca84a000-7fff88400000付近にありますが、まったく同じになることはありません。
x86_64アーキテクチャ(ELF64)でこのメモリセグメントの開始アドレスが固定されているかどうか、またはこのセグメントの最大範囲と最小範囲はどれくらいか知りたいのですが。
これが私がこの質問をする理由です。システムをTru64UNIXからLinuxに移行しています。このシステムは、IPC Sys V共有メモリの複雑な固定メモリマッピングを使用し、チェーンリストを使用してこのセグメント内の構造から別の構造に移動しています。このコードのサイズと複雑さ、および手元にある限られた時間で、共有メモリの開始を修正する堅牢な方法を見つけようとしています(セグメントをアタッチするために指定されたアドレスでshmatを効果的に使用します) )。64ビットの仮想アドレス空間は非常に大きいため(48ビットの事実上可能なアドレス)、「安全な」固定アドレスの選択は32ビットよりもはるかに簡単でリスクが少なくなります。