gpt4 book ai didi

c - realloc ANSI C 上的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:14 25 4
gpt4 key购买 nike

如果我运行此代码时向我显示“段错误”,但如果在“创建”函数的“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 次“你好”

最佳答案

这个

*(a[i]) = ...

应该是

(*a)[i] = ...

"Hello" 之类的“字符串”文字已经隐式 添加了终止符 '\0'。因此,无需像此处那样显式指定它:"Hello\0"

关于c - realloc ANSI C 上的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36810378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com