我有一个很长的程序,它包含一个头文件和两个源文件,在第一个我编写了函数的实现,在第二个(我的主要),我调用并执行他们。虽然,有一次我得到一条错误信息
浮点异常(核心转储)
,程序停止。
正如我所说,有很多代码行,因此,我无法在此发布我的整个源代码,但我会发布最相关的部分,以及发生错误的地方。
当我尝试调用此函数时,我的错误发生了(下面你可以找到它的实现):
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;
}
}
在这种情况下,Complex是我定义的类型定义。
typedef struct {
int real, imag;
} Complex;
这是main的部分,这个函数被调用。
Complex HFirst[64];
if((strcmp(channel, "LS") == 0) || (strcmp(channel, "ls") == 0))
{
if(i == 1)
chest_first(fft_input, ifft_bpsk_output, HFirst);
.
.
.
}
我之前已经调用了一些其他函数,它将值放到fft_input和ifft_bpsk_output,它们都是64个元素的复杂数组。
答案 0 :(得分:5)
你可能除以零或其他一些荒谬的数字。您确定real
的{{1}}和imag
不是零吗?可能在之前打印出来吗?
答案 1 :(得分:3)
我认为这可能是除以0的问题,检查你的价值。
答案 2 :(得分:-1)
我也遇到了同样的问题。由于使用的值大于数据类型可以处理的值,所以会发生这种情况 对于前 使用大小为10 ^ 7的数组,同时将其定义为int A [10 ^ 7] 这将抛弃becouz一个int数组无法处理这么大的.. 所以你必须使用适当的数据类型.. 谢谢 :)