malloc un tableau de pointeurs struct vs tableau de structs

Quelle est la différence entre

struct mystruct *ptr = (struct test *)malloc(n*sizeof(struct test));

et

struct mystruct **ptr = (struct test *)malloc(n*sizeof(struct test *));

Ils travaillent tous les deux beaux, je suis juste curieux au sujet de la différence réelle entre les deux. Le premier allouer un tableau de structures, tandis que le second un tableau de struct pointeurs? Dans l'autre sens? Aussi, qui a une plus petite empreinte mémoire?

source d'informationauteur alf