2011-07-10 10 views
5

Bu basit C kodunu derlediğimde sorun yok, ancak satırın kaldırılmasından sonra bölümleme hatası gösteriliyor. Bununla neyin yanlış olduğunu bilmiyorum. Lütfen yardım et.Yığın üzerindeki büyük dizileri ayırırken parçalanma hatası

#include<stdio.h> 
int main() 
    { 
    int arr[10002][10002]; 
    int color[10002]; 
    int neigh; 
// scanf("%d",&neigh); 
    return 0; 
    } 
+12

Muhtemelen sahip olduğunuz anlaşılıyor ... * davul rulosu * ... a ** Yığın Taşması **! * rimshot * –

+0

hangi numarada yazıyorsunuz? – dynamic

+0

Diyelim ki, int dizisi için birçok öğe için bellek ayırmak bir problem. Ve sınıra ulaştın. Açıkçası, kullandığınız işletim sisteminden de kaynaklanıyor. Bu linki okuyun: http://bytes.com/topic/c/answers/131385-maximum-size-array –

cevap

12

Sen arr ve color ile yığınını mahvediyorsun. Muhtemelen scanf numaralı telefona çağrınız yorumlandığında derleyici tüm bu değişkenleri uzaklaştırarak optimize eder, ancak mevcut olduğunda bellekte bellek ayırmaya çalışır.

Değişkenleri genel yapın ve yığın belleğe yığın bellek üzerinde okuyun.

#include<stdio.h> 

int arr[10002][10002]; 
int color[10002]; 

int main() 
{ 
    int neigh; 
    scanf("%d",&neigh); 
    return 0; 
} 
5

Bir işlev içinde ayrılan değişkenler, sınırlı bir boyuta sahip yığına yerleştirilir. Bunları malloc kullanarak (daha büyük) yığına ayırabilirsiniz.

+1

Dostum, bu C ... –

+0

oops! "... malloc" kullanarak. –