Usando malloc para alocação de matrizes multidimensionais com diferentes comprimentos de linha

Eu tenho o seguinteC código:

int *a;
size_t size = 2000*sizeof(int);
a = (int *) malloc(size);

que funciona bem. Mas se eu tiver o seguinte:

char **b = malloc(2000*sizeof *b);

onde cada elemento deb tem comprimento diferente.

Como é possível fazer a mesma coisa parab como eu fiz paraa; ou seja, o seguinte código seria correto?

char *c;
size_t size = 2000*sizeof(char *);
c = (char *) malloc(size);

questionAnswers(8)

yourAnswerToTheQuestion