我正在嘗試重新編譯一個使用fftw3(版本3.2.2)並且已經在32位Linux機器上運行的程序。它在64位機器上正確編譯 - 我鏈接到64位fftw庫 - 但在嘗試fftw_malloc
時程序出現段錯誤。下面是使用的代碼:64位linux機器上的`fftw_malloc'segfault
//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 segfaults。在這種情況下,它是gabor_filter,但是如果我重新排序變量,程序將在第一個fftw_malloc上進行段錯誤。
fftw_malloc調用程序段錯誤?看起來像一個愚蠢的問題,因爲每個電話都是一樣的。 – ctor 2012-07-12 18:56:40
忘了提及。它會在gabor_filter上進行段錯誤,但是如果對變量進行重新排序,則無論是第一個段錯誤(即,當block_signal是第一個,這將會出現段錯誤) – user1521731 2012-07-12 19:13:13
您可以嘗試['fftw_complex * fftw_alloc_complex(size_t n);'](http:// www。 fftw.org/doc/Memory-Allocation.html),看看會發生什麼?這是分配複合物的便利功能。只是想知道當時會發生什麼。 – ArjunShankar 2012-07-12 19:20:41