32bitと64bitのサイズの違い(C言語) [プログラミング]
32bitと64bit環境ではサイズが違うのでメモメモ。
色々な型に対してsizeof()関数を使ってみた結果は以下の通り。
OS間または32bit/64bit間でサイズが変わる型を使う場合は移植に注意が必要。
Windows | Solaris | Linux | ||||
32bit | 64bit | 32bit | 64bit | 32bit | 64bit | |
sizeof(char) | 1 | 1 | 1 | 1 | 1 | 1 |
sizeof(short) | 2 | 2 | 2 | 2 | 2 | 2 |
sizeof(int) | 4 | 4 | 4 | 4 | 4 | 4 |
sizeof(float) | 4 | 4 | 4 | 4 | 4 | 4 |
sizeof(long) | 4 | 4 | 4 | 8 | 4 | 8 |
sizeof(void*) | 4 | 8 | 4 | 8 | 4 | 8 |
sizeof(double) | 8 | 8 | 8 | 8 | 8 | 8 |
sizeof(long long) | 8 | 8 | 8 | 8 | 8 | 8 |
sizeof(long double) | 8 | 8 | 16 | 16 | 12 | 16 |
・WindowsとLinuxの64bit環境についてはItanium 2プロセッサ搭載マシンで実験。
・SolarisはSPARC 64Vプロセッサ搭載マシンにて実験(コンパイルオプションにより32/64切り換え)
2006-01-16 15:29
nice!(3)
コメント(6)
トラックバック(0)
intとポインタ型はCPUが処理しやすい大きさになるのが普通なのですよ。
16bitなら2Byteだし64bitなら8Byte。
それはそうとItenium2ましんいいなぁ。
おくれ!
by konuma (2006-01-20 01:28)
訂正。
intが汎用レジスタの大きさでポインタ型はメモリアドレス空間の大きさだだだ。
by konuma (2006-01-20 01:35)
なるほど。つまり、↑の値的には間違ってないってことね。
>>Itenium2
やるよ(嘘
64bit対応のソフト選びに難航するよ~
今のところItenium2の恩恵は…
by のぼ (2006-01-20 08:21)
まぁ結局CPUに関係なくコンパイラが決めること。
メモリ空間が2~3Gしかない某OSでポインタだけが64bitになっても無駄。
あいてにあむの恩恵は馬鹿でかいキャッシュと独自命令セットだろ。
by konuma (2006-01-22 01:44)
ほぅ。
ちなみに、ウチの部署にあるやつ、比較的よくCPUが壊…。
空調がちゃんとしてないのも大きな要因だろうが壊れすぎ。
by のぼ (2006-01-25 00:55)
「機械が壊れるような環境で生活させる気か!待遇改善を望む。」とでも言っておけば。| _・)
by konuma (2006-01-25 22:48)