在64位linux机器上``fftw_malloc'segfault

时间:2012-07-12 18:53:50

标签: c++ segmentation-fault fftw

我正在尝试重新编译使用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上进行段错误。

1 个答案:

答案 0 :(得分:0)

看起来你需要升级到3.3.3。我不确定为什么你的设置不起作用但是在3.3-beta1之前没有添加fftw_alloc_complex():

  

新的便利功能fftw_alloc_real和fftw_alloc_complex to   将fftw_malloc用于没有类型转换的真实和复杂数组   的sizeof。

FFTW 3 release notes

升级后,这仍然会发生吗? (您的原始问题或对@ArjunShankar评论的回复)