[英]Dynamic array of int pointers causing segmentation fault
我在C代码中发现了分段错误,搜索后找不到很好的解释或解决方案。
这第一个代码在打印0后给我分段错误。
#include <stdlib.h>
#include <stdio.h>
int main() {
int **defs = malloc(16 * sizeof *defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
*defs[i] = i;
}
free(defs);
return 0;
}
第二个代码工作正常。
#include <stdlib.h>
#include <stdio.h>
int main() {
int *defs = malloc(16 * sizeof defs);
int i;
for (i = 0; i < 16; i++) {
printf("%d\n", i);
defs[i] = i;
}
free(defs);
return 0;
}
这些只是示例,不是我的实际代码。 我也尝试做指针算术,但结果相同。 有人可以解释一下吗? 谢谢。
在第一个代码中,您尚未分配每个int*
存储块。 因此,在将值分配给defs[i]
,您必须使用int*
类型的内存填充它。
defs[i] = (int*)malloc(sizeof(int) * number_of_elements);
然后defs[i][some_index] = value
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.