gpt4 book ai didi

c - C 中数组的最大大小是多少?

转载 作者:行者123 更新时间:2023-11-30 16:31:42 26 4
gpt4 key购买 nike

我知道硬件会限制程序执行期间分配的内存量。但是,我的问题是不考虑硬件。假设内存量没有限制,那么数组是否也没有限制?

最佳答案

C 中数组的大小没有固定限制。

任何单个对象(包括任何数组对象)的大小均受 SIZE_MAX 限制,即 size_t 类型的最大值,它是 >sizeof 运算符。 (尚不完全清楚 C 标准是否允许大于 SIZE_MAX 字节的对象,但实际上不支持此类对象;请参阅脚注。)由于 SIZE_MAX 由实现决定,并且不能被任何程序修改,该程序对任何单个对象施加 SIZE_MAX 字节的上限。 (这是一个上限,而不是最小上限;实现可能并且通常会施加更小的限制。)

类型void*(一种通用指针类型)的宽度对执行程序中所有对象的总大小施加上限(可能大于单个对象的最大大小)对象)。

C 标准对这些固定大小施加了下限,但没有上限。没有一致的 C 实现可以支持无限大小的对象,但原则上它可以支持任何有限大小的对象。上限是由各个 C 实现、它们运行的​​环境以及物理原理决定的,而不是由语言决定的。

例如,符合要求的实现的 SIZE_MAX 可能等于 21024-1,这意味着它原则上可以拥有最多1797693134862315907729305190789024733617976978942306572734300811577326758055009631327084773224075360211201138798713933576 587897688144166224928474306394741243777678934248654852763022196012460941194530829520850057688381506823424628814739131105408 27237163350510684586298239947245938479716304835356329624224137215字节。

祝你好运找到真正支持此类对象的硬件。

脚注:没有明确的规则规定任何对象都不能大于 SIZE_MAX 字节。您无法将 sizeof 运算符有效地应用于此类对象,但与任何其他运算符一样,sizeof 可能会溢出;这并不意味着您无法对此类对象执行操作。但实际上,任何合理的实现都会使 size_t 大到足以表示它支持的任何对象的大小。

关于c - C 中数组的最大大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50454412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com