2011-07-10 43 views
5

Khi tôi biên dịch mã C đơn giản này thì tốt nhưng sau khi bỏ ghi chú dòng nó sẽ hiển thị lỗi phân đoạn. Tôi không biết chuyện này có gì sai. Hãy giúp tôi.Lỗi phân đoạn khi phân bổ các mảng lớn trên ngăn xếp

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

Dường như bạn có thể có ... * cuộn trống * ... a ** Stack Overflow **! * rimshot * –

+0

bạn đang nhập số nào? – dynamic

+0

Tôi nghĩ là một vấn đề, phân bổ bộ nhớ cho nhiều phần tử cho mảng int arr. Và bạn đã đạt đến giới hạn. Rõ ràng nó cũng phụ thuộc vào hệ điều hành bạn đang sử dụng. Đọc liên kết này: http://bytes.com/topic/c/answers/131385-maximum-size-array –

Trả lời

12

Bạn đang thổi ngăn xếp với arrcolor. Có lẽ khi cuộc gọi của bạn tới scanf được nhận xét, trình biên dịch tối ưu hóa tất cả các biến này, nhưng khi nó xuất hiện, nó cố gắng phân bổ bộ nhớ trên ngăn xếp.

Tạo các biến toàn cục và đọc lên bộ nhớ ngăn xếp so với bộ nhớ heap.

#include<stdio.h> 

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

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

Các biến được phân bổ bên trong một hàm được đặt trong ngăn xếp có kích thước giới hạn. Bạn có thể phân bổ chúng trên heap (lớn hơn) thay vì bằng cách sử dụng malloc.

+1

Dude, đây là C ... –

+0

oops! '... bằng cách sử dụng "malloc." –

Các vấn đề liên quan