fftw3 (バージョン 3.2.2) を使用し、32 ビット Linux マシンで既に実行されているプログラムを再コンパイルしようとしています。64ビットマシンで正しくコンパイルされます-そして私は64ビットfftwライブラリにリンクしました-しかし、プログラムを実行しようとするとセグメンテーション違反が発生しfftw_malloc
ます. 以下は、使用されるコードです。
//the variables on the right side are already initialized to nonzero values
int olsLen = blockLen + tempLen - 1;
int num_chans = 23;
fftw_complex *gabor_filter, *block_signal, *ols_out;
gabor_filter = (fftw_complex *) fftw_malloc( olsLen
* num_chans
* sizeof(fftw_complex));
block_signal = (fftw_complex *) fftw_malloc( olsLen
* num_chans
* sizeof(fftw_complex));
ols_out = (fftw_complex *) fftw_malloc( olsLen
* num_chans
* sizeof(fftw_complex));
問題を見つけるのは明らかなはずですが、現時点では自分のエラーを見るにはあまりにも愚かです。何か案は?
編集: 最初の fftw_malloc でセグメンテーション違反が発生します。この場合は gabor_filter ですが、変数を並べ替えると、プログラムは最初の fftw_malloc で segfault します。