size,size_t是什么类型
Size_t_百度百科
Size_t本段编辑概述size_t类型是在cstddef的头文件中定义的,cstddef是C标准库stddef.h头文件的C版本,它是一个机器相关的无符号类型,它的大小足够大,可以保证存储内存中对象的大小。
比如bitset的size运算返回bitset对象中二进制位数,返回值类型为size _ t。
比如访问带下标的元素时,vector使用vector:size_type作为下标类型,而数组下标的正确类型是size _ t。
本段的编辑源size_t是在标准C库中定义的,应该是unsigned int,或者64位系统中的long unsigned int。
Type socklen_t 和int的长度应该相同,否则会破坏BSD套接字层的填充。POSIX从size_t开始,Linus Torvalds(他想要更多的人,但显然不是很多)试图向他们解释使用size_t是完全错误的,因为64位结构中size_t和int的长度是不同的,这个参数的长度必须与int一致,因为这是BSD socket接口标准。最终,POSIX的家伙们找到了一个解决方案,那就是创建一个新的类型‘sock _ t’。Lintorvalds说,这是因为他们发现了自己的错误,但又不好意思向所有人承认,所以他们创造了一种新的数据类型。
在C中,size_t的设计是为了适应多种平台。size_t的引入增强了程序在不同平台上的可移植性。Size_t是为系统定制的数据类型,一般为整数,因为C/C标准只定义了最小位数,而不是必要的固定位数。而且在内存中,对数的高阶对齐存储还是低阶对齐存储,每个系统都不一样。为了提高代码的可移植性,有必要定义这样的数据类型。一般来说,这种类型一直定义到它占用了几个比特的内存等等。当然,有些已经被编译器或系统定义了。测试表明,32位系统中的size_t为4字节,而64位系统中的size_t为8字节,可以增强程序的可移植性。
编辑这段使用了一个基本的C/C类型无符号整数,这是sizeof运算符返回的结果类型,这个类型的大小是一个选择。因此,它可以存储理论上可能的任何类型数组的最大大小。换句话说,指针可以安全地放入size_t类型中(一个例外是类的函数指针,但这是一个特例)。size_t类型通常用于循环、数组索引、大小存储和地址操作。虽然size_t可以存储一个指针,但它的目的是更好地利用uintptr_t的形式,这是另一种无整型。在某些情况下,使用size_t类型比习惯使用无符号类型的程序员更有效、更安全。
Size_t是基于无符号整数memsize类型在C/C的标准库中定义的。在c中,此类型位于头文件stddef.h中,而在c中,它位于cstddef中。