【发布时间】:2012-07-12 18:53:50
【问题描述】:
我正在尝试重新编译一个使用 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 上出现段错误。
【问题讨论】:
-
程序段错误在哪个 fftw_malloc 调用上?看起来每个电话都是一样的,这似乎是一个愚蠢的问题。
-
忘了说。它在 gabor_filter 上出现段错误,但如果对变量重新排序,无论是第一个段错误(即,当 block_signal 是第一个时,都会出现段错误)
-
你可以试试
fftw_complex *fftw_alloc_complex(size_t n);看看会发生什么吗?它是分配复合体的便利功能。只是想知道接下来会发生什么。 -
我得到一个编译错误:在成员函数 FtrCalc_Rasta::Process_Gabor(...) 错误:在 '*' 标记之前的预期主表达式 //第一个 fftw_alloc_complex 行错误:'fftw_alloc_complex' 未定义在这个范围内
标签: c++ segmentation-fault fftw