今天我做了一个测试, 检查size_t和SIZE_T在32位系统下和64位系统下尺寸的区别.
首先我在32位系统中找到了这两个数据类型的定义:
typedef unsigned int size_t;
typedef ULONG_PTR SIZE_T;
typedef _W64 unsigned long ULONG_PTR
因为int类型在32位和64位计算机上都是4个字节长,而unsigned int和int的长度相等,自然就认为size_t也是4个字节长. 同理,认为SIZE_T也是4个字节.然而实际运行结果却大出所料.
数据类型 | Win32 | x64 |
size_t | 4 | 8 |
SIZE_T | 4 | 8 |
现在还没有找出原因. 蛮奇怪的.