Je vais mettre en œuvre un programme de liste chaînée avec bitfield dans sa structure, quelque chose comme ceci:Est-il correct d'utiliser des champs de bits dans une structure allouée dynamiquement en C?
typedef struct large
{
unsigned number :4;
struct large *next;
} large;
int main()
{
large *g;
g=(large *)malloc(sizeof(large));
g->number=15;
printf("%d",g->number);
return 0;
}
Le programme ci-dessus fonctionne correctement mais je lu dans GeeksForGeeks que,
Nous ne pouvons pas avoir de pointeurs sur les éléments de champ binaire car ils ne peuvent pas commencer à une limite d'octet.
Y aura-t-il des problèmes si je le code davantage pour l'implémentation de la liste chaînée?
Quel est exactement le problème? Vous n'avez aucun pointeur sur les membres du champ de bits. –
Vous savez que cela ne vous sauvera rien, n'est-ce pas? Et pourquoi voulez-vous utiliser des bitfields du tout? Ils n'ont de sens que pour la sécurité de la mémoire, êtes-vous sur une plate-forme fortement limitée en mémoire? – Olaf
En C, vous n'avez pas besoin de typer le résultat de retour de malloc – MCG