前回、Mach-Oのセグメント定義をロードしたときに__PAGEZEROセグメントと言うのが出てきた。興味を引かれたのでもうちょっと触ってみる。環境はx86_64。 __PAGEZEROセグメントに関して、アップルのリファレンスにはこう書いてある。 __PAGEZEROセグメントは実行形式ファイルの最初のセグメントとして静的リンカによって作成される。このセグメントは仮想メモリアドレス 0 に配置され、メモリ保護属性は全て禁止と設定される。このために、大抵の場合はプログラミングのミスである、NULL へのアクセスが発生するとプログラムは直ちに異常終了することになる。 __PAGEZEROセグメントのサイズは現在のアーキテクチャでの仮想メモリページの1ページ分である。(Intel, PowerPC系ならば 4096 バイト) __PAGEZEROにはデータが含まれないため、ファイル上でのサイズ
![__PAGEZEROセグメントでヌルぽ体験 - teru_kusu’s diary](https://cdn-ak-scissors.b.st-hatena.com/image/square/f871370f6a9526bcfca0f4fcc4f4602352a42ec3/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Ft%2Fteru_kusu%2F20100303%2F20100303153403.png)