私はC++/Cを経由して第5版を<のWindowsを読み>と以下のいくつかの引用です午前:質問のアドレス空間
各プロセスの仮想アドレス空間は 分割され、パーティションに分割します。 x86 32ビットの場合 Windowsの場合、0x00000000〜 0x0000FFFF(これを含む)のパーティションは、 NULLポインタ割り当てパーティションと呼ばれます。 このパーティションは、 プログラマがNULLポインタ 割り当てをキャッチするのを助けるために用意されています。 プロセス内のスレッドが、この パーティション内のメモリアドレスに書き込むか、 の書き込みを試みると、アクセス違反は になります。
私は疑問に思って、なぜ我々は範囲のアドレス空間の代わりに、がNULLポインタ割り当てをキャッチするだけの価値のを使用する必要がありますか? AFAIK、NULLは0です。だから、このデザインの背後にある考慮点は何ですか?ユーザーが触れてはいけない範囲が他にありますか?または、NULLは必ずしも0とは限りませんか?
多くのありがとうございます。
ご返信ありがとうございます。根本的な原因は、純粋な論理ではなく、エンジニアリングの詳細にあるようです。 – smwikipedia