尝试访问和写入结构成员后程序崩溃

Program crash after trying to access and write to structure member

在 C 中 Visual Studio 工作并尝试对一些示例进行 fft。 当我尝试向结构体成员写入一些值时,我的程序崩溃了,并且出现错误访问冲突写入位置 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_incx_out 只是指向结构数组的指针。你需要分配内存。

kiss_fft_cpx *cx_in = malloc(1024*sizeof(kiss_fft_cpx));
kiss_fft_cpx *cx_out = malloc(1024*sizeof(kiss_fft_cpx)); 
kiss_fft_cpx *cx_in = new kiss_fft_cpx[nfft];  

在 C++ 中,这将分配一个结构数组。 C中的类似部分是

struct kiss_fft_cpx *cx_in = malloc(nfft * sizeof(struct kiss_fft_cpx));  

您可以将其用作

cx_in[brojac].r = i;  // where 0 <= brojac < nfft