c - 对 size_t 感到困惑:在 32 位系统上它如何足够大?
问题描述
这更像是一个令人困惑的问题。size_t
据说是一种大到足以容纳 C 中任何大小的类型,所以我搜索了它的实际限制以了解更多信息,基于机器有两个最常见的限制,一个是“unsigned int”(在 32 位系统上)和一个是“unsigned long long”(在 64 位系统上)。
现在,至于“unsigned long long”,这是完全有道理的。因为它至少大约有 900 万兆兆字节!(假设它表示以字节为单位的大小)。但是对于“unsigned int”,它可以小到 65535!(基于Wikipedia 文章)所以这意味着大约只有 60 KB!这个巨大的差异很奇怪,而且,60 KB 不是很小的大小吗?所以这意味着在 32 位系统上不可能有大于 60 KB 的数组?!(例如,如果它是一个整数数组(每个 4 字节),那么它只有大约 16000 个整数)。
解决方案
推荐阅读
- python-3.x - 从 Python 中的多维列表中删除空列表
- node.js - 如何使用 aws-amplify 验证 node/express 中的 accessToken?
- json - 我如何使用脚本外壳获取 json 文件的 n 个元素
- django - 创建模型对象时如何以不同方式使用选择字段
- java - 更新可运行类中的变量值
- prolog - 这个谓词有什么作用?
- javascript - 未捕获(承诺中)类型错误:无法读取 null 的属性“样式”
- ios - 检测触摸何时开始在屏幕上的任何位置,即使是在 UIButton 上
- reactjs - 配置 Nginx 以服务 HTTPS 失败,但通过 HTTP 服务正在工作
- python - 使用 Django 扩展模板不起作用