我正在重寫一些代碼,從具有指針指向結構中的指針的常規指針開始。結構問題中的指針。我做對了嗎?
這是原來的代碼工作:
int wrote = sf_writef_double(outfile, *mono_channel, frames);
在新的代碼,在那裏我已經把mono_channel指針的結構。我寫
int wrote = sf_writef_double(outfile, data->mono_channel, frames);
編譯器不抱怨,但程序崩潰。
所以問題是。 data->mono_channel
與*mono_channel
相同嗎?
擁抱, 路易絲
編輯: 能在這裏更精確的是我做的:
ltfat_complex* fm;
fm = malloc(data->L * sizeof(ltfat_complex));
if (fm == NULL) { puts("fm malloc failed"); exit(1); }
/* Writes output to fm */
idgt_fac(data->coef, gdf, data->L, 1, 1, data->a, data->M, fm);
free(data->mono_channel);
data->mono_channel = (double*) fm;
free(fm);
...
int wrote = sf_writef_double(outfile_handler, data->mono_channel, frames);
可能的問題是,這我試圖重新使用指針data->mono_channel
?
EDIT2: 下面是完整的源代碼(〜每700行):
舊其中工程: http://www.student.dtu.dk/~s011392/gabor-io.zip
新: http://www.student.dtu.dk/~s011392/gui.zip
可悲的是,他們需要大量的庫來編譯:來自SVN,fftw3,lapack,blas和sndfile的ltfat。
但TEY是=)
這裏的問題是'free(fm)'。這也釋放了'data-> mono_channel',所以你以後不能使用它。 – 2009-11-12 21:51:10
哇!你是對的。修復了它=)非常感謝!我花了整晚的時間看這個。我在Stack Overflow處是新的。我可以給你分嗎? – Louise 2009-11-12 22:14:37
不幸的是,沒有辦法給點評論。而且他已經擁有唯一可以獲得好評的徽章。 – 2009-11-12 22:22:42