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=]".