多次元配列を再割り当てするときのコードは次のとおりです。関数 add_line を複数回使用すると、コードが機能しません。一日中それを理解しようとしていました。誰か助けてくれませんか?
void add_line(char ** wlist, char * word, int * size) // Extending wordlist or cross
{
    (*size)++;
    char ** new_wlist = (char**)realloc(wlist,(*size)*sizeof(char*));
    if(new_wlist == NULL)
        show_error("Reallocation error",1);
    wlist = new_wlist;
    wlist[(*size)-1] = (char*)malloc(ROW_SIZE*sizeof(char));
     if(strlen(word)>ROW_SIZE)
        show_error("Word too long", 1);
    strcpy(wlist[(*size)-1],word);
}
int main()
{
    int * w_size = (int*)malloc(sizeof(int));
    int * c_size = (int*)malloc(sizeof(int));
    *w_size = 0;
     *c_size = 0;
    char ** wordlist = (char**)malloc(sizeof(char*));
    char ** cross = (char **)malloc(sizeof(char*)); 
    add_line(cross,"test1",c_size);
    add_line(cross,"test2",c_size);
    return 0;
}