ポインタのサイズ: 固定値か型に依存するか?
プログラミングにおいて、ポインタはメモリ アドレスを格納する変数です。別の変数の。よくある疑問が生じます: ポインターのサイズは、ポインターが指す型のサイズと同じですか、それともポインターは常に固定サイズですか?
これを実証するために、次のコードを考えてみましょう:
int x = 10; int * xPtr = &x; char y = 'a'; char * yPtr = &y; std::cout << sizeof(x) << "\n"; std::cout << sizeof(xPtr) << "\n"; std::cout << sizeof(y) << "\n"; std::cout << sizeof(yPtr) << "\n";
このコードは次を出力します:
4 4 1 4
ご覧のとおり、xPtr と yPtr の両方のポインターは指す変数のサイズに関係なく、サイズは 4 バイトです。これは、一般にポインタのサイズが固定であり、システムのメモリ モデルによって決定されるためです。この場合、システムは 32 ビット実行可能モデルに従っている可能性があります。
ほとんどのシステムはポインターに固定サイズを使用しますが、例外もあります。たとえば、古い 16 ビット Windows システムでは、サイズの異なる 32 ビットと 16 ビットのポインターがありました。
ただし、コード内でポインター サイズについての仮定を行うことは避けるべきであることに注意することが重要です。 。代わりに、特定のポインター サイズが必要な場合は、適切なメソッドを通じて明示的に検証する必要があります。
以上がポインターのサイズは固定ですか、それともポインターが指すデータ型に依存しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。