À l'aide de malloc en C pour allouer de l'espace pour un typedef serais type

Je ne suis pas sûr exactement ce dont j'ai besoin pour l'utiliser comme un argument à la fonction malloc pour allouer de l'espace dans le table_allocate(int) de la fonction. Je pensais juste count_table* cTable = malloc(sizeof(count_table*)) , mais ce n'est pas faire n'importe quoi avec le paramètre de taille. Suis-je censé pour allouer de l'espace pour la list_node_t aussi? Ci-dessous est ce que je suis en train de travailler avec.

dans le .h fichier je suis donné cette signature:

//créer un compte tableau de struct et allouer de l'espace pour cela 
//retourne comme un pointeur 
count_table_t* table_allocate(int); 

Voici les structs que je suis censé utiliser:

typedef struct list_node list_node_t; 

struct list_node { 
char *clé; 
int valeur; 

//le nœud suivant dans la liste 
list_node_t *suivant; 
}; 

typedef struct count_table count_table_t; 

struct count_table { 
int taille; 
//un tableau de pointeurs list_node 
list_node_t **list_array; 
}; 

Merci!

Vous avez tout à fait un peu de bonnes réponses, mais personne n'a encore noter un point important: int est un type signé, et, sauf si vous souhaitez avoir des tailles, vous devez utiliser size_t, qui est le type retourné par la sizeof opérateur et passé à malloc et les amis, et est destiné à être en mesure de stocker l'index de tableau pour les tableaux de taille autorisée par le compilateur. Vous voulez probablement size_t size au lieu de int size.

OriginalL'auteur user516888 | 2010-11-23