Come faccio ad allocare memoria per un array di liste, dove la lista è così definita:

codice:
typedef struct {
  /** la testa della lista */
  elem_t * head;
  /** la funzione per confrontare due chiavi */
  int (* compare) (void *, void *);
  /** la funzione per copiare una chiave */
  void * (* copyk) (void *);
  /** la funzione per copiare un payload*/
  void * (* copyp) (void *);
} list_t;

typedef struct elem {
  /** chiave */
  void * key;
  /** informazione */
  void * payload;
  /** puntatore elemento successivo */
  struct elem * next;
} elem_t;
dichiaro la variabile list_t ** table;
dopodichè voglio allocare memoria e sapendo che la table ha lunghezza size faccio così:
table = malloc(size*sizeof(list_t));

Il problema è che quando utilizzo in seguito la table mi da segmentation fault, dove sbaglio???