C および C++ では、すべてのポインターがバイト単位で同じサイズであることが保証されていますか。つまり、次のようになります。
sizeof(void*) = sizeof(char*) = sizeof(int*) = ...
または、それが真実ではないいくつかの良いシステムがありますか?
C および C++ では、すべてのポインターがバイト単位で同じサイズであることが保証されていますか。つまり、次のようになります。
sizeof(void*) = sizeof(char*) = sizeof(int*) = ...
または、それが真実ではないいくつかの良いシステムがありますか?
いいえ。規格には保証がありません。
一部のシステムには例外があります。ただし、多くの典型的なシステムでは修正されており、そのシステムのアーキテクチャに依存しています。たとえば、32 ビット システムでは、ポインターは 4 バイトです。
ちなみに、uintptr_t
ポインターを保持できます (おそらく、現在のシステムのポインターの最大サイズを持っていると想定できます)。
uintptr_t
ポインタを保持できる符号なし整数型