私はドキュメントを読んでいてmmap
、この行に落ちました:
PROT_NONEページにはアクセスできません。
ファイルをメモリにマップするがアクセスしないという用途はありますか?
PROT_NONE
ガード ページの実装に使用できます。Microsoft にも同じ概念があります ( MSDN )。
最初のリンクを引用するには:
... メモリ割り当て操作中にアクセスできないメモリを追加で割り当てることは、ヒープ バッファ オーバーフローの悪用を軽減するための手法です。これらのガード ページは、1 ページ以上のすべてのメモリ割り当ての間に配置されたマップされていないページです。ガード ページは、アクセス時にセグメンテーション フォールトを引き起こします。
したがって、ネットワーク インターフェース、仮想マシン、インタープリターなどの領域の保護を実装するのに役立ちます。使用例: pthread_attr_setguardsize、pthread_attr_getguardsize。
考えられるアプリケーションの 1 つとして、メモリ範囲を予約するために使用できます。このような領域を割り当てた後、その範囲へのポインタを特別な値として使用できます。
考えられるアプリケーションの 1 つは、小さな値の最適化の形式を使用して、「小さな」整数と「大きな」整数を透過的に切り替えるライブラリです。大きな整数は、実際の数値を保持するメモリ領域へのポインターとして表されます。小さな整数は、この予約済みメモリ領域を指すポインタであり、その領域へのオフセットに等しい数を表します。(これがそのようなライブラリを実装するための最良の方法であると言っているのではなく、可能であるべきだと言っているだけです。)