> char (*dict0)[5];
This is a pointer (just one) to an array of 5 chars.
Contrast with char *dict0[5] which is an array of 5 pointers to char

You would need

Mydict.dict0 = malloc(...