2012-02-14 56 views
9

Tôi tương đối mới trên C, tôi đang cố gắng chạy một chương trình đơn giản và tôi nhận được thông báo lỗi này: Phân đoạn lỗi (lõi đổ) Tôi chỉ muốn in bất kỳ giá trị của mảng bit nhưng tôi có thể không, tôi đánh giá cao bất kỳ sự giúp đỡ về lỗi này.Lỗi phân đoạn (core dumped)

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <malloc.h> 

int main() 
{ 
    const long int N = 1000000000; 
    const int smallN = 125000000; 
    char bits[smallN]; 

    for(int i=0; i<smallN; i++){ 
     bits[i]=0xff; 
    } 

    printf("character = %c \n", bits[5]); 
} 

Trả lời

9

Mảng có vẻ vượt quá kích thước ngăn xếp (bit là một mảng trên ngăn xếp). Bạn có thể thử làm cho nó toàn cầu hoặc phân bổ mảng bằng cách sử dụng malloc.

+0

Cảm ơn bạn! – Percy

5

Lưu ý rằng đây là loại điều mà Valgrind có thể xác định chính xác cho bạn. Nếu bạn đã làm điều này bên trong một đoạn mã lớn, Valgrind sẽ chỉ cho bạn vào dòng đó là sai.

Đối với việc học C trong ngày và tuổi này, Valgrind không thể thiếu.

+3

không thực sự là câu trả lời, thêm nhận xét – David