size_t和ptrdiff_t都与机器和平台有关。

size_t的基础是无符号整型,但是它能存储理论上数组的最大值。在32位系统上它是32位的,在64位系统上它是64位的,因此一个size_t类型的变量能够安全的存储一个指针。size_t类型的最大值是常量SIZE_MAX。

ptrdiff_t的基础是有符号整型,但是它能存储理论上数组的最大值。在32位系统上它是32位的,在64位系统上它是64位的,因此一个ptrdiff_t类型的变量能够安全的存储一个指针。ptrdiff_t类型还是两个指针(地址)相减的返回值类型。

详细请见:

http://blog.163.com/lgy-047/blog/static/61346565200910921449408/