ポインタのサイズは、コンパイルするアプリケーションの種類によって異なります。
ポインタは32-bit unsigned int
、メモリ位置を格納するため、32ビットアプリケーションのに似ています。
アプリケーションがアプリケーションの場合、メモリ位置を格納するのに十分な大きさである必要があるためN-bit
、ポインタのサイズは長くなります。N bits
アプリケーションを実行できるすべてのN-bit
コンピューターにN-bit
は、RAM制限があり2^N bytes
ます。これにより、最大のメモリロケーションIDがに等しくなります2^N - 1
(0x00000000
有効なメモリアドレスであるため)。
2^N - 1
はバイナリで表す必要N bits
があります。私の友人は、32ビットアプリケーションでポインタのサイズが4バイトである理由です。
例として単純化のためのアプリケーションを取り上げ3-bit
ます:(私はむしろ多数を扱いたくない)
3-bit
マシン上で実行されていると仮定しましょう。はで2^3 - 1
2進数で表すことができる最大数である3 bits
ため、システムが処理できる最大メモリは2^3
バイトになります。(これらは符号なしです。負のメモリアドレスは存在しません)
可能なメモリアドレスは次のとおりです。
0x0
(バイナリ表現000
:)
0x1
(バイナリ表現001
:)
0x2
(バイナリ表現010
:)
0x3
(バイナリ表現011
:)
0x4
(バイナリ表現100
:)
0x5
(バイナリ表現101
:)
0x6
(バイナリ表現110
:)
0x7
(バイナリ表現111
:)
したがって、このような場合、メモリアドレスを指すポインタが必要になります3 bits
。
に置き換え3
て32
ください。これは、ここで行っていることに適用されます。
(やり過ぎの答えは多いですか?はい。なぜですか?退屈だったからです。)