我已经用以下格式定义了数组,但显然该程序仅在情况 B 中工作正常。
CASE A:
int **M1;
M1 = (int **)malloc(m * sizeof(int *));
for (int i=0; i<m; i++){
M1[i] = (int *)malloc(d * sizeof(int));
}
CASE B:
int (*M1)[m] = malloc(sizeof(int[m][d]));
我在案例 A 中遇到分段错误。原因可能是什么?
以下代码编译时没有错误或警告gcc
编译器,
int **M1,i;
M1 = (int **)malloc(5 * sizeof(int *));
for (i=0;i<5;i++){
M1[i] = (int *)malloc(2 * sizeof(int));
}
M1[0][0]=111;
M1[0][1]=222;
printf("\n%d %d",M1[0][0],M1[0][1]);
Gives 111 222
作为输出。
问题可能出在代码的其他地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)