繁体   English   中英

导致分段错误的int指针的动态数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM