我正在尝试重新编译使用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上进行段错误。
答案 0 :(得分:0)
看起来你需要升级到3.3.3。我不确定为什么你的设置不起作用但是在3.3-beta1之前没有添加fftw_alloc_complex():
新的便利功能fftw_alloc_real和fftw_alloc_complex to 将fftw_malloc用于没有类型转换的真实和复杂数组 的sizeof。
升级后,这仍然会发生吗? (您的原始问题或对@ArjunShankar评论的回复)