Я переписываю некоторый код с наличия обычного указателя на то, где указатель находится в структуре.
Это оригинальный код, который работает:
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
?
Объятия,
Луиза
Edit:
Чтобы быть более точным, вот что я делаю:
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
К сожалению, им требуется много библиотек для компиляции: ltfat из SVN, fftw3, lapack, blas, sndfile.
Но они есть =)