繁体   English   中英

重新分配ANSI C时出现分段错误

[英]Segmentation fault on realloc ANSI C

如果我向我显示此代码是“段错误”,但是如果我在“创建”功能的“ for”中设置了子句i <1(即一个周期),则程序正在运行,为什么?

void create(char ***a,int *length){
    int i=0;
    *length = 0;
    for(i=0;i<4;i++){
        ++(*length);
        (*a)=realloc(*a,(*length)*sizeof(char *));
        *(a[i])="Hello\0";
    }
}

int main(int argc, char *argv[]) {
    int i;
    char **a = NULL;
    int *l = malloc(sizeof(int));
    create(&a,l);
    for (i=0; i<(*l); i++) {
        printf("%s",a[i]);
    }
    printf("\n");
    return EXIT_SUCCESS;
}

我想要的是最后该程序向我显示了4次“ Hello”

这个

*(a[i]) = ...

应该

(*a)[i] = ...

"Hello"这样的“字符串”文字已经隐式添加了终止符'\\0' 因此,无需像在这里那样明确指定它: "Hello\\0"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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