Posted on 2011-06-18 21:53
RTY 阅读(393)
评论(0) 编辑 收藏 引用 所属分类:
C/C++ 、
转载随笔
概述
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字节的,这样利用该类型可以增强程序的可移植性。