2.size

2.size,第1张

2.size

文章目录
    • ssize_t
      • 头文件
      • 类型
      • 作用
      • POSIX手册原文
      • 归纳
    • size_t
      • 头文件
      • 类型
      • 作用
      • POSIX手册原文:
      • 归纳
    • 补充

ssize_t 头文件

类型

符号整型

作用

字节数或(为负时)标识错误。
由多个系统调用和库函数返回,作为指示错误的一种方式。如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.

归纳
  • 无符号
  • 字节数或错误标识
size_t 头文件

类型

无符号整型

作用

对象大小(以字节数计)。
用于表示内存中对象的大小,是sizeof运算符和strlen函数的返回值类型。这意味着它是无符号整书类型,它的具体大小取决于平台;选择的尺寸足够大以表示该平台上的所有尺寸。

比如:对数组索引时,size_t保证足够大以表示数组中所有可能的索引。

POSIX手册原文:
  1. 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类型
  1. size_t : Used for sizes of objects.
补充

关于read()、write()中一次性读写nbyte(size_t类型)字节,返回值为却为ssize_t 类型,这说明nbyte是可能超过ssize_t的最大上限SSIZE_MAX3的。

手册中:

  1. 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.
  1. 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。

呵呵,应该等到我去世都不用担心这个问题。


  1. n. 指示;显示;表明;标示;象征 ↩︎

  2. n.实施;执行;贯彻;生效;完成;工具;仪器;供给器具 ↩︎

  3. 头文件 ↩︎

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存