int G[1000][1000] 佔用 1000*1000*4 = 400MB 內存。定義位置不同,後果天壤之別:
scanf 都執行不到。scanf 可正常讀取輸入。// 正確:全局定義
int G[1000][1000];
int main() { scanf("%d", &n); ... }
int **G = malloc(1000 * sizeof(int*)); for(i) G[i]=malloc(1000*sizeof(int)); 釋放時逐行 free。static int G[1000][1000]; 同全局,不佔棧。short 或位圖壓縮。「區分棧、堆、數據段、代碼段內存分布,說明大對象定義位置的影響。」