C++ `马洛克';64位linux机器上的segfault
我正在尝试重新编译一个使用fftw3(版本3.2.2)并已在32位linux机器上运行的程序。它在64位机器上正确编译——我链接到了64位fftw库——但在尝试C++ `马洛克';64位linux机器上的segfault,c++,segmentation-fault,fftw,C++,Segmentation Fault,Fftw,我正在尝试重新编译一个使用fftw3(版本3.2.2)并已在32位linux机器上运行的程序。它在64位机器上正确编译——我链接到了64位fftw库——但在尝试fftw\u malloc时,程序会出错。以下是使用的代码: //the variables on the right side are already initialized to nonzero values int olsLen = blockLen + tempLen - 1; int num_chans = 23; fftw_
fftw\u 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_滤波器,但如果我重新排序变量,程序将在第一个fftw_malloc上segfault 看起来您需要升级到3.3.3。我不知道为什么您的设置不起作用,但直到3.3-beta1才添加fftw_alloc_complex(): 新的方便函数fftw_alloc_real和fftw_alloc_complex to 使用fftw_malloc处理不带类型转换或 sizeof
升级后,这种情况还会发生吗?(您最初的问题或对@ArjunShankar评论的回复)看起来您需要升级到3.3.3。我不知道为什么您的设置不起作用,但直到3.3-beta1才添加fftw_alloc_complex(): 新的方便函数fftw_alloc_real和fftw_alloc_complex to 使用fftw_malloc处理不带类型转换或 sizeof
升级后,这种情况还会发生吗?(您最初的问题或对@ArjunShankar评论的回应)程序在哪个fftw_malloc调用上出错?看起来是个愚蠢的问题,因为每个电话都是一样的。忘了提那个了。它在gabor_滤波器上进行分段故障,但是如果对变量进行重新排序,那么无论第一个分段故障是什么(即,当block_信号是第一个时,这将是分段故障),您是否可以尝试改为看看会发生什么?这是一个方便的函数,用于分配复合体。我只是想知道接下来会发生什么。我得到一个编译错误:在成员函数FtrCalc_Rasta::Process_Gabor(…)中错误:在“*”标记之前应该有一个主表达式//第一个fftw_alloc_复杂行错误:“fftw_alloc_复杂”没有在这个作用域中定义,在哪个fftw_malloc调用程序?看起来是个愚蠢的问题,因为每个电话都是一样的。忘了提那个了。它在gabor_滤波器上进行分段故障,但是如果对变量进行重新排序,那么无论第一个分段故障是什么(即,当block_信号是第一个时,这将是分段故障),您是否可以尝试改为看看会发生什么?这是一个方便的函数,用于分配复合体。只是想知道接下来会发生什么。我得到一个编译错误:在成员函数FtrCalc_Rasta::Process_Gabor(…)中错误:在“*”标记之前应该有一个主表达式//第一个fftw_alloc_复杂行错误:“fftw_alloc_复杂”未在此范围内定义