私が理解したところでは、ユーザー空間プログラムで扱うアドレスは、実際の物理メモリアドレスではなく、仮想メモリアドレスです。 Memory-Management-Unitはこれらの仮想アドレスを実際の物理アドレスにマップします。ポインタのサイズが仮想メモリ空間のアドレス指定可能なサイズより小さいのはなぜですか?
しかし、32ビットマシンでは、ポインタのサイズはほとんど32ビットですが、実際にはプロセスが実際には4GBを超えることがあります。つまり、プログラムの仮想アドレス空間は32ビット以上のアドレス可能です。ビット(8GBの仮想アドレス空間を持つプログラムの場合、仮想メモリは33ビットでアドレス指定されます)。 私のプログラムでは、4GB後にメモリの場所にアクセスするためのポインタ(32ビットのみ)を使用することはできません。
なぜ、ポインタのサイズは32ビットのみですか、32ビットマシンではそれほど多くないのはなぜですか?ポインタのサイズを決めるのは何ですか?
プロセスメモリのアドレス空間が物理メモリ空間より大きくなる可能性があることを説明してください。 – duffymo
@duffymo 4GBのRAMを搭載したPCを想像し、8GBを使用して64ビットアプリケーション(コースの64ビットOS)を実行すると、64GBのアドレス(ポインタ)が使用されますが、RAMは4GBですが、豊富な仮想メモリ – nabuchodonossor
@shiva:これは具体的なプログラミングに関する質問ではないと思います。ここでは例が役立ちますので、あまりにも間違っています – nabuchodonossor