realloc ANSI C 上的分段错误
Segmentation fault on realloc ANSI C
如果我 运行 向我显示此代码 "segmentation fault",但如果在 "create" 函数的 "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[=10=]";
}
}
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] = ...
"string" 像 "Hello"
这样的字面量已经 隐含地 添加了一个终止 '[=13=]'
字符。因此,无需像此处那样 明确地 指定它:"Hello[=14=]"
.
如果我 运行 向我显示此代码 "segmentation fault",但如果在 "create" 函数的 "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[=10=]";
}
}
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] = ...
"string" 像 "Hello"
这样的字面量已经 隐含地 添加了一个终止 '[=13=]'
字符。因此,无需像此处那样 明确地 指定它:"Hello[=14=]"
.