【发布时间】:2020-01-02 15:24:51
【问题描述】:
使用 C 语言在 Visual Studio 中工作并尝试做一些示例的fft。
当我尝试向 struct 的成员写入一些值时,我的程序崩溃并且出现错误访问冲突写入位置 0x00000000。
首先,我尝试使用this C 代码,但出现错误:
kiss_fft_cpx *cx_in = new kiss_fft_cpx[nfft];
kiss_fft_cpx *cx_out = new kiss_fft_cpx[nfft];
在这两行。好的,C 中没有新内容。我试图修改它,但我做不到。我试过了
kiss_fft_cpx *cx_in[1024];
kiss_fft_cpx *cx_out[1024];
在我尝试用
传递一些值之后的几行cx_in[brojac]->r = i; // this is where program breaks
cx_in[brojac]->i = q;
来自kiss_fft.h 头文件
typedef struct {
kiss_fft_scalar r;
kiss_fft_scalar i;
} kiss_fft_cpx;
typedef struct kiss_fft_state* kiss_f;
//beginning of main
kiss_fft_cpx *cx_in[1024];
kiss_fft_cpx *cx_out[1024];
//after doing some sampling
cx_in[brojac]->r = i; // this is where program crash
cx_in[brojac]->i = q;
【问题讨论】:
-
cx_in是一个指针数组。您需要分配内存来存储数据。你这样做吗?请显示此分配。 -
您需要阅读有关内存分配的教程或书籍。
-
下面的答案是正确的,但您也可以只执行
kiss_fft_cpx cx_in[1024];(即删除*以分配结构数组而不是结构指针数组)。
标签: c visual-studio struct fft