读书人

int型二维数组的最大长度解决方法

发布时间: 2012-05-16 11:12:12 作者: rapoo

int型二维数组的最大长度
我想问个基础问题,就是我在编程序时候,由于数据比较大,所以int array[10000][200],然后显示出错。但是int array[65536]却是没事的。我想问问出现这个问题的原因,然后int型一维二维数组最大能表示的长度是多少?还有string型一维二维数组分别能表示的长度。先谢谢大家的回答吧!

[解决办法]

探讨
我想问个基础问题,就是我在编程序时候,由于数据比较大,所以int array[10000][200],然后显示出错。但是int array[65536]却是没事的。我想问问出现这个问题的原因,然后int型一维二维数组最大能表示的长度是多少?还有string型一维二维数组分别能表示的长度。先谢谢大家的回答吧!

[解决办法]
数组下标一般是int或unsigned int类型,在32位机器上足够定义出20亿以上的下标范围了。通常大数组出错都不是它造成的,而是因为数组耗尽了栈空间的缘故。

定义大型数组应该尽量放在堆里,别放在栈上。栈空间很有限,不该浪费它。

放堆里有很多办法:用new创建、定义为static数组、定义为全局数组等等。
[解决办法]
static int array[10000][200];
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

读书人网 >C++

热点推荐