程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> a[1000][1000]程序崩潰,1000程序崩潰

a[1000][1000]程序崩潰,1000程序崩潰

編輯:C++入門知識

a[1000][1000]程序崩潰,1000程序崩潰


  1000 * 1000是大於65536的。如果不是需求需要,沒必要開辟如此之多的空間。因為這些空間實在棧上申請的(如果是局部變量),棧的空間是有限的並且是寶貴的,所以呢,開辟太多的空間而不適用很可能會出現內存洩露。

  數組下標一般是int或unsigned int類型,在32位機器上足夠定義出20億以上的下標范圍了。通常大數組出錯都不是它造成的,而是因為數組耗盡了棧空間的緣故。

定義大型數組應該盡量放在堆裡,別放在棧上。棧空間很有限,不該浪費它。

放堆裡有很多辦法:用new創建、定義為static數組、定義為全局數組等等。

  

具體:

static int a[1000][1000];
在占用內存空間較大的局部數組聲明的前面加static將其從堆棧數據段挪到全局數據段即可。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved