一个char数组可以有多少个字符?

2023-12-29

#define HUGE_NUMBER ???

char string[HUGE_NUMBER];
do_something_with_the_string(string);

我想知道在不冒任何潜在内存问题、缓冲区溢出等风险的情况下,我可以添加到 char 数组中的最大数量是多少。我希望获得用户的输入,并且可能是尽可能多的输入。


请参阅 Jack Klein 的回复(请参阅原帖 http://bytes.com/topic/c/answers/218557-array-size-limits):

原始 C 标准 (ANSI 1989/ISO 1990)要求编译器 成功翻译至少一篇 程序至少包含一个 一组环境的例子 限制。这些限制之一是 能够创建至少一个对象 32,767 字节。

这一最低限额在 1999 年 C 标准更新为 至少 65,535 字节。

不需要 C 实现 提供大于该值的对象 大小,这意味着他们不需要 允许更大的整数数组 比(int)(65535 / sizeof(int))。

从非常实际的角度来说,在现代 电脑,不能说 预先确定数组可以有多大 创建的。它可能取决于诸如 物理内存量 安装在计算机中,数量 操作系统提供的虚拟内存, 其他任务、驱动程序的数量, 以及已经运行的程序以及如何 正在使用的内存太多。所以你的 程序可能能够使用更多或 今天运行的内存比它少 昨天可以用或者可以 明天用。

许多平台都制定了最严格的规定 自动对象的限制,即 那些在函数内部定义的 不使用“静态” 关键词。在某些平台上您可以 创建更大的数组(如果有) 静态或动态分配。

现在,为了提供一个稍微更有针对性的答案,不要声明巨大的数组以避免缓冲区溢出。这接近人们能想到的 C 语言中最糟糕的做法。相反,花一些时间编写好的代码,并仔细确保不会发生缓冲区溢出。另外,如果您事先不知道数组的大小,请查看malloc,它可能会派上用场:P

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

一个char数组可以有多少个字符? 的相关文章

随机推荐