就 size_t 而言,“目标平台上最大可能对象的大小”是多少

2024-05-15

我正在阅读有关的文章size_t在 C/C++ 中http://web.archive.org/web/20081006073410/http://www.embedded.com/columns/programmingpointers/200900195 http://web.archive.org/web/20081006073410/http://www.embedded.com/columns/programmingpointers/200900195(通过 Stackoverflow 找到的链接)。

引用文章中的内容:

类型 size_t 是一个 typedef,它是某些无符号整数的别名 类型,通常为 unsigned int 或 unsigned long,但甚至可能 无符号长长。每个标准 C 实现都应该 选择足够大的无符号整数——但不大于 需要——来表示最大可能物体的尺寸 目标平台。

如何确定机器上最大可能物体的尺寸?

什么影响最大物体的尺寸(除了处理器)?

欢迎链接详细解释。


编辑:我认为重要的是要考虑到这种类型并不严格意味着您可以拥有该大小的对象 - 只是它是一个足够大的整数来容纳最大可能对象的大小 - 这并不意味着你可以使用SIZE_MAX来分配内存。它只是保证最大可能的对象不能大于SIZE_MAX.

这是编译器实现的架构决定(通常又基于编译器所针对的操作系统,但操作系统可以提供比编译器更多的功能,或者编译器可以支持比操作系统更多的理论量)允许,只是当你要求它时它会失败)。

实际上,几乎总是处理器决定了这一点 -size_t几乎总是与处理器的位数匹配 - 例如在 32 位处理器中它是 32 位,在 64 位处理器中是 64 位。但设计一个在 64 位处理器上运行 32 位的系统是可能的——一个“对象”不能大于 4GB,这实际上并不是一个很大的限制。这只是意味着你不能使用单个向量int填充超过 4GB,因此目录中的条目不超过 1Gvector (or 4G char条目)。

当然,另一个限制因素是可用内存 - 如果您有一台非常旧的机器,有 256MB RAM,它不会允许您分配 4GB,即使size_t允许它。但是给同一台机器更多的内存,你就可以使用更大的尺寸。

在许多 32 位系统上,应用程序允许的最大内存小于 4GB(完整的 32 位范围),因为内存的某些部分被“保留”以供其他用途。那么,再次,size_t是 32 位,因此允许 4GB,但它实际上并不支持单个应用程序使用的全部内存量 - 另一方面,32 位机器可以拥有超过 4GB 的 RAM,并且可以使用它在多个应用程序之间。

另外,如果系统(由于某些架构原因)受到限制,例如 16MB 内存,size_t最有可能仍然是 32 位无符号整数 - 因为大多数处理器不处理 24 位整数 [某些 DSP 可能会这样做,但常规 16 或 32 位处理器不会]。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

就 size_t 而言,“目标平台上最大可能对象的大小”是多少 的相关文章

  • 结构化绑定中缺少类型信息

    我刚刚了解了 C 中的结构化绑定 但有一件事我不喜欢 auto x y some func is that auto正在隐藏类型x and y 我得抬头看看some func的声明来了解类型x and y 或者 我可以写 T1 x T2 y
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 调用 McAfee 病毒扫描引擎

    我收到客户的请求 要求使用他们服务器上的 McAfee 病毒扫描将病毒扫描集成到应用程序中 我做了一些调查 发现 McScan32 dll 是主要的扫描引擎 它导出各种看起来有用的函数 我还发现提到了 McAfee Scan Engine
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 如何从 iOS 应用程序检测不安全的 wifi 网络

    我想检测我的应用程序中是否存在不安全的 wifi 网络 是否有任何公共 iOS API 可以实现相同的目的 没有记录的 API 可以获取该信息 如果您的应用程序需要通过网络发送和接收敏感数据 您通常应该假设没有安全连接
  • 属性中的角度表达式

    我有一个使用 Angular 的页面 其中我从引导程序实现了弹出窗口 img class state msg 数据内容无法正确呈现 它按字面意思返回 item status message 而不是 message 的值 角度在 数据 属性中
  • Jquery POST 获取建议列表

    我有下一个代码 它运行良好 问题是当用户写完单词时 脚本不断创建后调用并不断更改建议列表 我想做一些事情 如果用户继续写一个单词 脚本会停止所有的 post 调用 只执行最后一个 inputString keydown function l
  • 用数字 1-1000 填充 Postgres 数据库?

    我是 pgAdmin3 的新手 我想用数字 1 1000 填充 pgAdmin3 中的数据库 我该怎么做呢 目前 我创建了一个名为 MyDatabase 的数据库 其中没有任何内容 每行应与其数值相对应 第 1 行应包含 1 第 2 行应包
  • JSF 中基于两个组件的组合的验证/转换

    我正在开发一个 JSF Web 应用程序 我需要使用周期性作为数据结构 以下是我使用的 Java 类 public class Periodicity implements Serializable private Integer valu
  • MySQL 帮助:如何查找客户的所有订单,直到价格 <= 20 且状态='未付款'

    我认为通过提供以下示例可以更好地理解我的问题 我有一个包含以下数据的表 orderid Price username paymentstatus 1 10 john unpaid 2 10 john unpaid 4 10 john unp
  • 如何在安装过程中运行“.bat”文件?

    在安装项目中 诸如 exe dll js vbs 之类的可执行文件是可以接受的 但无法运行 bat自定义操作中的文件 问题是如何运行 bat安装过程中的文件 好吧 经过大量搜索和反复试验 我解决了这个问题 我不确定这是否是最好的方法 但它确
  • ORACLE:未找到数据——但数据存在

    调试包过程 当实际上有数据时却找不到数据 仅测试 SELECT SELECT trim trailing from GL SECURITY as DUMMY FROM b2k user b2k WHERE sms username FUCH
  • 面向服务的架构 - AMQP 或 HTTP

    一点背景 非常大的整体 Django 应用程序 所有组件都使用相同的数据库 我们需要分离服务 以便我们可以独立升级系统的某些部分而不影响其余部分 我们使用 RabbitMQ 作为 Celery 的代理 现在我们有两个选择 使用 REST 接
  • 在 Yesod 生态系统中,对某些文本进行 urlencode 的最佳方式是什么?

    我想对一些文本进行 url 编码 例如 用 20 替换每个空格等 我找到了 HTTP Network HTTP Base urlEncode 并且可以使用它 但我想知道是否还有其他通常在 Yesod 生态系统中使用的东西 不幸的是 由于 U
  • 为什么在方法中声明的对象在方法返回之前会受到垃圾回收?

    考虑在方法中声明的对象 public void foo final Object obj new Object A long run job that consumes tons of memory and triggers garbage
  • $(this) 在 jQuery 中如何工作

    jQuery 标签是如何实现的 this 到底工作吗 我知道如何使用它 但是 jQuery 如何知道哪个元素是 活动的 用于获取当前项目的原始 Javascript 标签是什么 还是只是 jQuery The this是一个简单的 java
  • 如何在Union中查询不同类型的同一字段?

    我有以下型号 type Duck category Baz type Foo size FooSize type Bar size BarSize union Baz Foo Bar 以下查询会引发错误Validation error of
  • React this.state 未定义?

    我正在遵循 Pluralsight 的初学者教程 在表单提交时将值传递给addUser组件方法 我需要将 userName 推送到this state users但我收到错误 App jsx 14 Uncaught TypeError Ca
  • 部署在github中的Jekyll显示index.html文件的原始文本

    我正在尝试使用来自的分叉存储库来部署 Jekyll 网站https github com cotes2020 jekyll theme chirpy https github com cotes2020 jekyll theme chirp
  • Selenium WebDriver - 意外的模式对话框警报

    我正在尝试使用 WebDriver 来自动化网站 我正在使用 Firefox 驱动程序 但主页有一个弹出模式警报窗口 显示 您需要使用 IE 6 0 才能查看此应用程序 还有一些 功能可能无法使用 我检查了页面的来源 它有一个功能 Moda
  • 客户端登录 - 如何在客户端安全地存储凭据?

    许多 API 都提供通过用户 密码组合远程访问其数据的功能 我想知道存储这些值的最佳方式是什么 高度安全的方式 即使 100 是不可能的 以便直接连接它们而无需每次都询问这些值 我推荐以下三种方法之一 使用身份验证令牌完全避免存储密码 在此
  • 这是依赖注入吗?这是一种不好的做法吗?

    我有一个小框架 我是这样编码的 我不确定这是否称为依赖注入 我不知道它是否像设计模式 我也不知道并且想知道是否通过 this因为 param 是一种不好的做法 看看这个 不是一个有效的示例 只是将这些代码写入浏览器中以供解释 This is
  • Kate 文本编辑器正则表达式用于在 PC 上更改 CNC 代码

    使用某些CAM软件时 通常会正确生成带有空格的CNC代码 但例如 当通过 USB 或网络移动到 Citizen Cincom L20 机器并在那里进行编辑时 它会丢失空格 也会丢失分号 同时保留新行 无论如何 这些行都可以作为分号使用 但是
  • 就 size_t 而言,“目标平台上最大可能对象的大小”是多少

    我正在阅读有关的文章size t在 C C 中http web archive org web 20081006073410 http www embedded com columns programmingpointers 2009001