c++如何定义数组a[1000000001]

如题,我写的语句是int a[1000000001],编译出来出现很多错误(其他地方没有错,我编了个最简单的程序试了一下也是报数组错误),不知道是不是内存爆了,求教如何修改?谢谢!
另外,问一下为什么100000001可以定义,1000000001不能?数组定义有没有界限?

第1个回答  推荐于2017-09-22
函数体内的数组存在于栈中,函数体外的或者用static声明的数组存在于堆中,变量存储的内存空间不同,大小限制也会不同。
如果这个值超过了允许的空间大小,肯定会出错的。
另外,最好不要用这么大的数组,遍历、修改操作都不方便,性能太低。
一个int类型在32位和64位机器上是4个字节。
1000000001 * 4 / 1024 / 1024 B 约为 3814.6MB,大约3.7GB,肯定会出错的。
假如是char a[1000000001],也行能够编译通过,能不能运行就不知道了。本回答被提问者采纳
相似回答