- ssize_t
- 头文件
- 类型
- 作用
- POSIX手册原文
- 归纳
- size_t
- 头文件
- 类型
- 作用
- POSIX手册原文:
- 归纳
- 补充
有符号整型
作用字节数或(为负时)标识错误。
由多个系统调用和库函数返回,作为指示错误的一种方式。如read()、write()
ssize_t read(int fd, void *buf, size_t nbyte); ssize_t write(int fd, const char* buf, size_t nbyte);POSIX手册原文
归纳ssize_t : Used for a count of bytes or an error indication1.
- 无符号
- 字节数或错误标识
无符号整型
作用对象大小(以字节数计)。
用于表示内存中对象的大小,是sizeof运算符和strlen函数的返回值类型。这意味着它是无符号整书类型,它的具体大小取决于平台;选择的尺寸足够大以表示该平台上的所有尺寸。
比如:对数组索引时,size_t保证足够大以表示数组中所有可能的索引。
POSIX手册原文:归纳
- size_t : Unsigned integer type of the result of the sizeof operator.
The implementation2 shall support one or more programming environments in which the
widths of ptrdiff_t, size_t, and wchar_t are no greater than the width of type long.
The names of these programming environments can be obtained using the confstr() func‐
tion or the getconf utility.
…
- 无符号整型
- 足够大(取决于平台)
- 表示对象大小
- 宽度不大于long类型
补充
- size_t : Used for sizes of objects.
关于read()、write()中一次性读写nbyte(size_t类型)字节,返回值为却为ssize_t 类型,这说明nbyte是可能超过ssize_t的最大上限SSIZE_MAX3的。
手册中:
- According to POSIX.1, if count is greater than SSIZE_MAX, the result is implementa‐tion-defined; see NOTES for the upper limit on Linux.
- If the value of nbyte is greater than {SSIZE_MAX}, the result is implementation-de‐
fined.
说是由具体实现定义的,不过很是奇怪它们怎么解决。
我想应该是没有解决的,不过看了stackoverflow上的讨论,觉得
很有道理论:
SSIZE_MAX,在我的64位机上,是2^63-1,也就是9223372036854775807,也就是8589934591.9GB,85亿GB。
呵呵,应该等到我去世都不用担心这个问题。
n. 指示;显示;表明;标示;象征 ↩︎
n.实施;执行;贯彻;生效;完成;工具;仪器;供给器具 ↩︎
头文件
↩︎
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)