size_t的引入增强了程序在不同平台上的可移植性

概述

  size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件 stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。   例如bitset的size操作返回bitset对象中二进制位中的个数,返回值类型是size_t。   例如在用下标访问元素时,vector使用vector:: size_type作为下标类型,而 数组下标的正确类型则是size_t。

来源

  size_t是标准C库中定义的,应为unsigned int。   数据类型"socklen_t"和int应该具有相同的长度。否则就会破坏 BSD套接字层的填充.POSIX开始的时候用的是size_t, Linus Torvalds(他希望有更多的人,但显然不是很多) 努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数(也就是accept函数的第三参数)的 长度必 须和int一致,因为这是BSD套接字接口标准.最终POSIX的那帮家伙找到了解决的办法,那就是创造了一个新的类 型"socklen_t".Linux Torvalds说这是由于他们发现了自己的错误但又不好意思向大家伙儿承认,所以另外创造了一个新的数据类型 。   在C++中,设计 size_t 就是为了适应多个平台的 。size_t的引入增强了程序在不同平台上的可移植性。size_t是针对系统定制的一种数据类型,一般是整形,因为C/C++标准只定义一最低的位 数, 而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定议这样的数据类型。一般这 种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。经测试发现,在32位系统中size_t是4字节的,而在64位系统 中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。

你可能感兴趣的:(size_t的引入增强了程序在不同平台上的可移植性)