IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 2.size_t和ssize_t 以及size_t超出SSIZE_MAX的情况 -> 正文阅读

[C++知识库]2.size_t和ssize_t 以及size_t超出SSIZE_MAX的情况

ssize_t

头文件

<sys/types.h>

类型

有符号整型

作用

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

头文件

<stddef.h>

类型

无符号整型

作用

对象大小(以字节数计)。
用于表示内存中对象的大小,是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. 头文件<limits.h> ??

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-08 13:48:12  更:2022-01-08 13:48:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:54:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码