當我編譯這個簡單的C代碼時,它很好,但是在取消註釋該行後,它顯示了分段錯誤。我不知道這有什麼問題。請幫忙。在堆棧上分配大數組時分段錯誤
#include<stdio.h>
int main()
{
int arr[10002][10002];
int color[10002];
int neigh;
// scanf("%d",&neigh);
return 0;
}
當我編譯這個簡單的C代碼時,它很好,但是在取消註釋該行後,它顯示了分段錯誤。我不知道這有什麼問題。請幫忙。在堆棧上分配大數組時分段錯誤
#include<stdio.h>
int main()
{
int arr[10002][10002];
int color[10002];
int neigh;
// scanf("%d",&neigh);
return 0;
}
你吹堆棧arr
和color
。假設你的電話scanf
被註釋掉了,編譯器會優化掉所有這些變量,但當它出現時,它會嘗試在堆棧上分配內存。
使變量成爲全局變量,並在堆棧內存和堆內存中進行讀取。
#include<stdio.h>
int arr[10002][10002];
int color[10002];
int main()
{
int neigh;
scanf("%d",&neigh);
return 0;
}
函數內分配的變量放在堆棧上,堆棧的大小有限。您可以使用malloc
將它們分配到(較大)堆上。
夥計,這是C ... –
哎呀! '...通過使用「malloc」。'' –
它看起來像你可能有... *鼓卷* ... a **堆棧溢出**! * rimshot * –
你輸入了哪個號碼? – dynamic
我認爲是一個問題,爲數組int arr的許多元素分配內存。你已經達到了極限。顯然它也取決於您使用的操作系統。閱讀此鏈接:http://bytes.com/topic/c/answers/131385-maximum-size-array –