函數內每塊被申請的內存都被稱為棧變量,如果所申請的整塊內存大小大於棧空間的限定時,就被稱為棧舉出。
如在函數內有下列代碼:
int arr[1000][1000];
編譯時會有出錯提示:
因為數組都是整塊申請的,為了避免棧舉出,解決方法是採用動態申請內存,並且使用雙重指針變量來使用多塊堆空間:
#include <iostream>
using namespace std;
void main()
{
//int a[1000][1000];//靜態申請,整塊棧空間會超出棧空間大小
int **a=new int*[1000];//動態申請1000個指針
for(int k=0;k<1000;k++)
a[k]=new int[1000];//動態申請每個指針指向的動態數組
for(int i=0;i<1000;i++)//初始化
{
for(int j=0;j<1000;j++)
a[i][j]=i+j;
}
delete []a;//釋放
a=NULL;
}
/<iostream>
-End-
閱讀更多 小智雅匯 的文章