可以分配给数组指针的字节数是否有最大限制?
例如,如果我使用 16000 的大小,那么这有效。
char* iobuffer=new char(16000);
iobuffer[15000]='a';
不过
char* iobuffer=new char(160000);
iobuffer[150000]='a';
这不是。
这应该不是内存问题,所以是否有一些内部限制?进一步查看后,可能是堆无法存储那么多。
最佳答案
您实际上弄错了分配代码。您正在使用圆括号,它为您新分配的值提供了一个初始值设定项。换句话说,在这两种情况下,您都分配了一个单个 char
供使用,分别初始化为16000
和160000
.使用括号动态分配数组。†
在那之后,你下标(方式)越界,导致undefined behavior . (在您的情况下,任何超过零的下标都是未定义的行为;更一般地说,下标超过数组边界是未定义的行为。)
要回答这个问题,在语言方面没有限制。这取决于您的运行环境。
†当然,您永远不应该使用 new[]
。请改用 std::vector
。
关于c++ - char 数组的最大大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5589283/