1000 * 1000是大于65536的。如果不是需求需要,没必要开辟如此之多的空间。因为这些空间实在栈上申请的(如果是局部变量),栈的空间是有限的并且是宝贵的,所以呢,开辟太多的空间而不适用很可能会出现内存泄露。

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

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

放堆里有很多办法:用new创建、定义为static数组、定义为全局数组等等。

  

具体:

static int a[1000][1000];
在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可。

int  (*p)[MAX] = new int[MAX][MAX]; 

相关文章:

  • 2021-07-22
  • 2021-05-23
  • 2022-03-05
  • 2021-09-18
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-03-04
  • 2021-06-02
  • 2021-09-25
  • 2021-06-14
  • 2022-02-05
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案