私はcppコードでmmap()を使用して、大きなサイズの領域(100,000,000バイト〜100MB)をマップしています。
man mmapからは、成功したかどうかしかわからないこと、マッピングに成功したサイズがわからないことがわかります。
私の場合、8192バイトのバッファーを使用してその領域を繰り返し読み取ることができましたが、約24MBを読み取った後、SIGSEGVが取得されます。これは、mmapが領域全体を正常にマップしなかったことを意味しますか?
memcpy関数を使用して、マップされた領域からヒープ上のバッファーにコピーしています。(バッファがスタック上にある場合にも同じ動作が見られます)。
エリア全体がマッピングされているかどうかはどうすればわかりますか?また、エリア全体をマッピングした場合、約24MBのバイトを読み取った後にSIGSEGVを取得するのはなぜですか?
ありがとう!