Tôi có một chương trình dài, bao gồm một tệp tiêu đề và hai tệp nguồn, trong tệp đầu tiên tôi đã viết các triển khai của các hàm và trong tệp thứ hai (là của tôi chính), tôi gọi và thực hiện chúng. Mặc dù vậy, tại một thời điểm tôi nhận được một thông báo lỗi nóiNgoại lệ dấu chấm động (core dumped)
Floating điểm ngoại lệ (core dumped)
và chương trình dừng lại.
Như tôi đã nói có rất nhiều dòng mã, do đó, tôi không thể đăng toàn bộ mã nguồn của mình ở đây, mặc dù tôi sẽ đăng các phần có liên quan nhất và nơi xảy ra lỗi.
lỗi của tôi xảy ra khi tôi cố gắng để gọi chức năng này (bên dưới, bạn có thể tìm thấy việc thực hiện):
void chest_first(Complex* FFTInput, Complex* IFFTOutput, Complex* HFirst)
{
int i;
for(i = 0; i < 64; i++)
{
HFirst[i].real = FFTInput[i].real/IFFTOutput[i].real;
HFirst[i].imag = FFTInput[i].imag/IFFTOutput[i].imag;
}
}
Trong trường hợp này phức tạp, là một định nghĩa kiểu mà tôi đã xác định.
typedef struct {
int real, imag;
} Complex;
Đây là phần chính, nơi chức năng này được gọi.
Complex HFirst[64];
if((strcmp(channel, "LS") == 0) || (strcmp(channel, "ls") == 0))
{
if(i == 1)
chest_first(fft_input, ifft_bpsk_output, HFirst);
.
.
.
}
Trước đó tôi đã gọi một số chức năng khác, đặt giá trị cho fft_input và ifft_bpsk_output, cả hai mảng phức hợp với 64 phần tử.
'IFFTOutput [i] .real' (hoặc' .agag') là 0. (Hoặc '-1' và cổ tức là' INT_MIN' là một khả năng khác trên một số nền tảng.) Nhạy cảm, một bộ phận nguyên bởi 0 làm tăng 'SIGFPE'. –
@Daniel Fischer, nhận xét sâu sắc của bạn về các quirks của phân chia số nguyên và khiến SIGFPE xứng đáng được trả lời. – chux