在C++裡, int p[labl][labw], 這種陣列是屬於在動態陣列和靜態陣列之間的一種陣列. 原因是此陣列讓你在執行時宣告其大小(靜態陣列要在寫時宣告其大小)但宣告其大小過後卻不能改變其大小(動態陣列可改). 在電腦裡有兩種記憶體, 一是stack, 另一種是heap. stack是所有變數所在的地方. heap是所有new和malloc()回傳的記憶體所在的地方. 一般來講, 靜態陣列是存在於stack而動態陣列是存在於heap. 而這種陣列的記憶體是存在於stack. 當你把labl和labw設為1000時, p的大小是1000*1000*sizeof(int) = 1000*1000*4 = 4,000,000. 所以當在執行這程式時當執行到int p[labl][labw], 電腦要從stack中拿出4,000,000個記憶體時因stack裡沒這麼多記憶體, 所以出錯. 如果你改成用動態陣列則無此問題. 因動態陣列是用heap而不是stack. heap比stack大. 不過雖然heap比stack大, 但仍有其限制.在kernel space不可能超過heap的極限的. 因在將近heap的極限時會thrashing(電腦會變的很慢). 不過在user space(你在user...