Veuillez allouer exactement la taille dont vous avez besoin : malloc(sizeof *node);
-- si vous passez à une plate-forme 64 bits qui double la taille de tous vos membres, votre ancienne structure de 96 octets pourrait prendre 192 octets dans le nouvel environnement.
Si vous n'avez pas de pointeur sur l'un des éléments de la struct Node
que vous avez créées, alors je ne pense pas que vous devriez les allouer avec des malloc(3)
en premier lieu. malloc(3)
est la meilleure solution si votre application exige que les données persistent en dehors de la portée d'appel de la fonction actuelle. I s'attendre à que vous pourriez réécrire votre fonction comme ceci :
struct Node node;
while(...){
//do stuff with node
}
ou
while(...){
struct Node node;
//do stuff with node
}
selon que vous voulez accéder au dernier nœud (la première version) ou non (la deuxième version).
Bien sûr, si vous avez réellement besoin de ces structures en dehors de ce morceau de code, vous devez y stocker des références quelque part . Ajoutez-les à une liste globale en gardant la trace de struct Node
ou ajouter chacun d'eux à la liste des objets next
du pointeur de la précédent struct Node
ou ajouter chacun d'entre eux à un struct User
qui s'y réfère, ce qui est le mieux pour votre application.