c++ - char 数组的最大大小?

标签 c++ arrays

可以分配给数组指针的字节数是否有最大限制?

例如,如果我使用 16000 的大小,那么这有效。

char* iobuffer=new char(16000);
iobuffer[15000]='a';

不过

char* iobuffer=new char(160000);
iobuffer[150000]='a';

这不是。

这应该不是内存问题,所以是否有一些内部限制?进一步查看后,可能是堆无法存储那么多。

最佳答案

您实际上弄错了分配代码。您正在使用圆括号,它为您新分配的值提供了一个初始值设定项。换句话说,在这两种情况下,您都分配了一个单个 char 供使用,分别初始化为16000160000 .使用括号动态分配数组。†

在那之后,你下标(方式)越界,导致undefined behavior . (在您的情况下,任何超过零的下标都是未定义的行为;更一般地说,下标超过数组边界是未定义的行为。)

要回答这个问题,在语言方面没有限制。这取决于您的运行环境。


†当然,您永远不应该使用 new[]。请改用 std::vector

关于c++ - char 数组的最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589283/

相关文章:

c++ - 形成对对象的引用是否构成访问?

c++ - 将文件放到主目录

java - 访问抽象数组

javascript - Vue 过滤对象属性

c# - 非线性系统 - 如何跟踪委托(delegate)的未知数?

c++ - 用空实现覆盖删除运算符

c++ - 钩子(Hook)和线,鼠标阻塞

c++ - 在指针上同时使用前缀和后缀时出现奇怪的输出

java - java的数组是 "primitive type"吗?

c++ - 模板特化中的类型(数组类型的 unique_ptr)