C 使用箭头运算符的静态内存分配

C 使用箭头运算符的静态内存分配,c,C,我正在尝试切换到关于权重的静态分配\u init\u表。在我收到的代码中,它是动态分配的,如下所示: if((预测器参数->权重初始化表=(int32\u t**)malloc(sizeof(int32\u t*)*输入参数->z\u大小))==NULL){ fprintf(stderr,“\n分配权重初始化表时出错-1\n\n”); 返回-1; } 对于(i=0;iz_size;i++){ if((预测器参数->权重初始化表[i]=(int32\u t*)malloc(sizeof(int32

我正在尝试切换到关于
权重的静态分配\u init\u表
。在我收到的代码中,它是动态分配的,如下所示:

if((预测器参数->权重初始化表=(int32\u t**)malloc(sizeof(int32\u t*)*输入参数->z\u大小))==NULL){
fprintf(stderr,“\n分配权重初始化表时出错-1\n\n”);
返回-1;
}
对于(i=0;iz_size;i++){
if((预测器参数->权重初始化表[i]=(int32\u t*)malloc(sizeof(int32\u t)*预测长度))==NULL){
fprintf(stderr,“\n分配权重初始化表时出错-2\n\n”);
返回-1;
}
}
正如您所看到的,
weight\u init\u table
是一个有符号int(int32\t)指针的2D数组。事情是这样的

predictor_params->weight_init_table[输入_params->z_size][prediction_len];
当我遇到分段错误时,它似乎没有分配内存

使用箭头
->
操作符访问时,如何在内存中分配该数组?

ps:predictor_params结构的
如下所示:

typedef结构预测程序配置{
无符号字符用户\输入\预带;
无符号字符pred_带;
未签名字符已满;
无符号字符和;
无符号字符寄存器大小;
无符号字符权重的分辨率;
整数加权区间;
煤焦重量_首字母;
最终的炭重量;
无符号字符权重\初始\分辨率;
int**重量初始表格;
}预测器配置;

预测器参数和输入参数是否正确初始化?请发布一个。另外,似乎存在类型不匹配(
weight\u init\u table
int**
,但分配了一个
int32\t
数组)。另一个注意事项是,
malloc()
family的强制转换结果是…和
input_params->z_size
是数组的长度,然后使用此索引访问对象是overflow@MikeCAT你说的类型不匹配是对的,问题是我从c开始,我不知道如何静态分配int**
input_params
已正确初始化,因为使用mallocs的版本工作正常,我需要静态分配工作代码以消除关键应用程序的不确定性。@Jean BaptisteYunès我尝试降低索引,但没有解决问题,但你是对的,这是一个溢出。