gpt4 book ai didi

c - 如果 size_t 是 64 位,那么 char 数组的最大大小是多少?

转载 作者:行者123 更新时间:2023-11-30 20:01:22 29 4
gpt4 key购买 nike

我看到了几个与此接近的答案,但没有看到具体的答案。

如果 size_t 设置为 64 位,则 2^64 大约为 18 quintillion 标准字符(通常为字节),作为 char* 数组的最大大小。如果除以 10^9 (GB),我们最终会得到 18GB 作为内存中数组大小的最大理论限制(如果可以购买 32GB 的笔记本电脑 - 那么也是实际的) .

18GB 真的是 64 位机器上字符数组/字符串的限制吗?还是我在推理中遗漏了一些东西?

我正在学习我的第一门真正的计算机科学类(class),所以如果我的理解有任何严重错误,请原谅。

编辑对于阅读本文的任何人来说,我的数学似乎是错误的,所以请务必阅读下面的答案。具体来说,当我除以 10^9 时,这会将答案转换为 GB 单位,但仍然有 18 * 10^9 的 GB。相当于 18 艾字节。

最佳答案

如果 size_t 为 64 位,则(假设没有填充位)SIZE_MAX 为 264-1,即 18446744073709551615。这有点多超过 18 艾字节,即约 170 亿千兆字节。

(它是 17 而不是 18,因为在这种情况下,前缀“kilo”、“mega”、“giga”等代表 1024 的幂,而不是 1000。近年来,引入了 binary prefixes明确代表 1024 的幂,但尚未得到广泛使用。)

是的,这意味着 264-1 是程序可以创建的任何对象的大小的上限。 (标准中存在一些含糊之处,但其目的是 size_t 可以表示任何对象的大小。)

这并不意味着您实际上可以创建那么大的对象。 264-1 是对象大小的上限,但不是(必然)最小上限。在实践中,其他考虑因素,例如可用内存量(物理和/或虚拟)和机器寻址限制,通常会施加更小的限制。

在具有 32 位 size_t 的系统上,最大理论对象大小约为 4 GB,而在现代系统上这可能是一个实际限制。对于 64 位 size_t,鉴于现代计算机技术,实际限制几乎肯定是由其他因素强加的。

关于c - 如果 size_t 是 64 位,那么 char 数组的最大大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747645/

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