64 ビット Windows データ型と 32 ビット Windows データ型の比較
目次
Windows 向けの 64 ビット クロスプラットフォーム アプリケーション開発 への移動
以下の表は、64 ビット OS のデータ型と 32 ビット OS のデータ型の相違点と類似点をまとめたものです。
Delphi の 32 ビットおよび 64 ビット Windows の組み込み型のサイズ
整数型
Win64 では、NativeInt は Win32 の NativeInt のサイズの 2 倍です。また、NativeUInt も Win32 の NativeUInt のサイズの 2 倍です。
符号付き整数 |
符号なし整数 |
Delphi/32 |
Delphi/64 |
---|---|---|---|
1 バイト | |||
2 バイト | |||
4 バイト | |||
4 バイト | |||
4 バイト | |||
8 バイト | |||
4 バイト |
8 バイト |
ポインタ型
64 ビット版 Windows では、ポインタ型はすべて 8 バイト(32 ビット版 Windows のサイズの 2 倍)です。
ポインタ型 |
Delphi/32 |
Delphi/64 |
---|---|---|
4 バイト |
8 バイト | |
クラス インスタンス | ||
クラス参照 | ||
インターフェイス | ||
手続きポインタ | ||
動的配列 | ||
オブジェクトの手続き
64 ビット版 Windows では、オブジェクトの手続きのアラインメントは 16 バイト(32 ビット版 Windows の 2 倍)です。
オブジェクトの手続き | Delphi/32 | Delphi/64 | 解説 |
---|---|---|---|
サイズ | 8 バイト | 16 バイト | |
アラインメント | 8 バイト | 16 バイト | クロージャ型として知られている |
浮動小数点型(Extended 型を含む)
Extended 型は、64 ビット Windows では 32 ビット Windows の場合より、2 バイト分精度が低くなります(前者では 8 バイトであるのに対して、後者では 10 バイト)。
詳細については、「4 ビット Windows システムでは Extended データ型のサイズは 2 バイト小さい」を参照してください。
浮動小数点型 |
Delphi/32 |
Delphi/64 |
解説 |
---|---|---|---|
4 バイト |
|||
8 バイト |
|||
8 バイト |
|||
10 バイト |
8 バイト |
TExtended80Rec は、Win64 では 10 バイトです。 | |
6 バイト |
|||
8 バイト |
|||
8 バイト |
その他の型
Win64 では、ファイル サイズが増えています。
その他の型 |
Delphi/32 |
Delphi/64 |
解説 |
---|---|---|---|
1 バイト |
|||
1 バイト |
|||
2 バイト |
|||
4 バイト |
|||
1 バイト |
|||
2 バイト |
|||
2 バイト |
|||
256 バイト |
|||
string[N] |
N+1 バイト |
||
16 バイト |
24 バイト | ||
592 バイト |
616 バイト |
||
730 バイト |
754 バイト |
XE リリースでは 720 バイト |
定数
定数 |
Delphi/32 |
Delphi/64 |
---|---|---|
MaxInt |
$7fffffff | |
MaxLongInt |
$7fffffff |
C++Builder の 32 ビットおよび 64 ビット Windows の組み込み型のサイズ
以下の表は、C++Builder における 64 ビット OS のデータ型と 32 ビット OS のデータ型の相違点と類似点をまとめたものです。
メモ: System ユニットのメンバ(たとえば System::Byte など)を使用する場合は、#include <System.hpp>
の記述が必要です。
整数型
Win64 では、System::NativeInt/ssize_t は、Win32 の System::NativeInt/ssize_t の 2 倍のサイズです。
同様に、System::NativeUInt/ssize_t は、Win32 の System::NativeUInt/size_t の 2 倍のサイズです
符号付き整数 |
符号なし整数 |
C++/32 |
C++/64 |
解説 |
---|---|---|---|---|
1 バイト |
||||
2 バイト |
||||
System::LongWord、unsigned |
4 バイト |
|||
4 バイト |
||||
8 バイト |
||||
4 バイト |
8 バイト |
ポインタ型
64 ビット版 Windows では、ポインタ型はすべて 8 バイト(32 ビット版 Windows のサイズの 2 倍)です。
ポインタ型 |
C++/32 |
C++/64 |
---|---|---|
System::Pointer、void* |
4 バイト |
8 バイト |
__closure
64 ビット Windows では、__closure のアラインメントは 16 バイトで、32 ビット Windows でのサイズの 2 倍になります。
__closure |
8 バイト | 16 バイト |
浮動小数点型(Extended 型を含む)
Extended 型は、64 ビット版 Windows では、2 バイト分精度が低くなります。
詳細については、「4 ビット Windows システムでは Extended データ型のサイズは 2 バイト小さい」を参照してください。
浮動小数点型 |
C++/32 |
C++/64 |
解説 |
---|---|---|---|
4 バイト |
|||
8 バイト |
|||
System::Extended、long double |
10 バイト |
8 バイト |
TExtended80Rec は、Win64 では 10 バイトです。 |
サポートされていません |
|||
8 バイト |
|||
8 バイト |
その他の型
Win64 では、ファイル サイズが増えています。
その他の型 |
C++/32 |
C++/64 |
解説 |
---|---|---|---|
1 バイト |
|||
1 バイト |
|||
2 バイト |
|||
4 バイト |
|||
1 バイト |
|||
2 バイト |
|||
System::Char、wchar_t (Windows)、char16_t (macOS) |
2 バイト |
||
256 バイト |
|||
16 バイト |
24 バイト |
定数
定数 |
C++/32 |
C++/64 |
---|---|---|
MaxInt |
$7fffffff | |
MaxLongInt |
$7fffffff |