64Bit OS no

解決


shou  2004-04-21 18:16:56  No: 53528  IP: [192.*.*.*]

64Bit OSである Windows Server 2003 + VS 2003.NET の Cや C++では intのサイズはいくつになるのでしょうか? 同様の条件でメモリのアドレスのサイズは?

編集    削除
shou  2004-04-21 18:20:25  No: 53529  IP: [192.*.*.*]

すみません タイトルが途中で切れてしまいました。m(__)m
「 64Bit OSの intとメモリアドレスのサイズについて 」

編集    削除
Toshi  2004-04-21 19:07:39  No: 53530  IP: [192.*.*.*]

基本的に、ポインター以外は32ビットのままです。
ポインターだけ64ビット幅になります。

が、細かい所では、size_t や time_t が64ビット幅になったり、
APIの一部のパラメータが64ビット幅に変更された新しい物が
用意されてたりします。

詳しくはプラットフォームSDKのヘルプを見ると良いと思います。
(英語ですが・・)

編集    削除
shou  2004-04-21 21:00:03  No: 53531  IP: [192.*.*.*]

Toshi さん こんにちは
  回答ありがとうございます。

昔読んだ参考書に intとポインタのサイズは OSの Bit数に依存するとあったので気になったのですが。
intは 32Bitのままなんですね 64Bit にしたら doubleと同じですもんね

編集    削除
Toshi  2004-04-21 22:19:44  No: 53532  IP: [192.*.*.*]

>昔読んだ参考書に intとポインタのサイズは OSの Bit数に依存するとあったので>気になったのですが。

OSでは無くて、CPUのBit数に依存するですね。
その認識は間違って無いのですが、最近Cベースの言語定義も時代と共に
変わってきててですね・・
今時は CPUのBit数 = int とは限らず、
「各Cコンパイラのデータモデル実装方式により、型精度が決まる」
と言った方が正しい認識だと思います。
データモデルには LP32、ILP32、ILP64、LLP64、LP64 等が有ります。

それぞれのデータモデルでの型精度は
http://www.unix-systems.org/version2/whatsnew/login_64bit.html
に一覧が出ています。

ちなみに、64bit-WindowsのVCが採用しているデータモデルは LLP64
(略称 P64 とも言う)です。

編集    削除
shou  2004-04-21 23:35:31  No: 53533  IP: [192.*.*.*]

>OSでは無くて、CPUのBit数に依存するですね。

ごめんなさい Toshiさんの仰る通り CPUの Bit数でした。m(__)m

とても参考になりました,ありがとうございました。

編集    削除