ページ 11

プラットホーム

Posted: 2017年8月03日(木) 11:33
by にこよん
visualstudio2017のWin32アプリケーションでデバッグかリリースを選択する場所の右にある
x86とx64を選ぶところがありますが(プラットホーム?)、これを変更すると何が変わるのでしょうか?

私が現在持っている知識からはこれぐらいのことしか推測できないのですが、あっていますか?
その他何か変わることや、注意点などがあればご教授ください。

x86
作成したプログラムを動かすパソコンのCPUが32bitでも64bitでも動くが処理が遅い?

x64
作成したプログラムを動かすパソコンのCPUが64bitでしか動かないが処理が速い?

Re: プラットホーム

Posted: 2017年8月03日(木) 13:26
by YuO
処理の速度の差が出る場合もありますが,大きいのは利用可能なメモリの大きさです。
  • x86は32bit用の実行ファイルを生成するため,32bit環境でも64bit環境でも実行できますが,メモリは最大4GiB (実際のユーザーメモリ空間は2GiB未満) しか扱えません。
  • x64は64bit用の実行ファイルを生成するため,32bit環境では実行できず64bit環境のみで実行できますが,メモリは最大16EiB (実際はOSに依存,Windows 2016の場合は24TiB) まで扱えます。
動画編集ソフトなど,大量のメモリを必要とする場合などには,x64用のバイナリを作るとプログラムが簡単になる場合があります。

注意点としては,ポインタ型やsize_t, ptrdiff_tなどの型のサイズが変化することがあります。
x86ビルドにおいてこれらの型は32bitでしたが,x64ビルドにおいてこれらの型は64bitになります。
printfに渡すときなどに,size_tに対応する箇所を%dにしてしまうと,正しく値が表示されなくなりますし,
ref) http://dixq.net/forum/viewtopic.php?t=5310&p=44235
ポインタをint型にキャストして元の型に戻すと,値が欠落する可能性があります。

Re: プラットホーム

Posted: 2017年8月03日(木) 13:47
by にこよん
よくわからないままx86を使っていたのですが、小さなプログラムしか作れないので
今後もx86のままやっていきます。
もやっとしたものがはれました ^^)

迅速な返信ありがとうございました。

Re: プラットホーム

Posted: 2017年8月03日(木) 14:05
by keito94
オフトピック
ゲームを作る時は、気にしなくていいかもしれません。

Re: プラットホーム

Posted: 2017年8月03日(木) 16:30
by にこよん
そうですね。
作っているのはゲームなので今後もx86のままやっていきます。

解凍ありがとうございました。