필자는 하나의 헤더 파일과 두 개의 소스 파일로 구성된 긴 프로그램을 가지고 있는데, 첫 번째 것은 함수 구현을 작성한 것이고 두 번째는 내 main), 나는 그들을 호출하고 실행한다. 비록, 한 지점에서 나는부동 소수점 예외 (코어 덤프)
부동 소수점 예외가 (코어 덤프)라는 오류 메시지가
을 얻고 프로그램이 중지됩니다.
많은 코드 라인이 있기 때문에 가장 관련성이 높은 부분을 게시하고 오류가 발생한 곳에서 전체 소스 코드를 게시 할 수는 없습니다. 나는 (당신은 그것의 구현을 찾을 수 아래)이 함수를 호출 할 때
내 오류가 발생합니다이 경우 단지에서
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;
}
}
, 내가 정의한 타입 정의입니다.
typedef struct {
int real, imag;
} Complex;
여기는이 함수가 호출되는 곳의 주요 부분입니다.
Complex HFirst[64];
if((strcmp(channel, "LS") == 0) || (strcmp(channel, "ls") == 0))
{
if(i == 1)
chest_first(fft_input, ifft_bpsk_output, HFirst);
.
.
.
}
나는 이전 64 개 요소를 모두 복잡한 배열을 몇 가지 다른 fft_input에 값을 넣어 기능, ifft_bpsk_output를 불렀다.
'IFFTOutput [i] .real' (또는'.imag')는 0입니다. (또는'-1'이고 배당금은 INT_MIN입니다.) 일부 플랫폼에서는 또 다른 가능성이 있습니다. 0이면 'SIGFPE'가 발생합니다. –
@ 대니얼 피셔 (Daniel Fischer), 정수 나누기의 단점과 SIGFPE의 원인에 대한 귀하의 통찰력있는 의견은 답변 게시 권한이 있습니다. – chux