Ci-dessous, j'ai écrit une liste primitive singulièrement liée en C. La fonction "addEditNode" DOIT recevoir un pointeur par valeur, ce qui, je devine, signifie que nous pouvons éditer les données du pointeur mais ne pouvons pas le pointer ailleurs. Si j'alloue de la mémoire en utilisant malloc dans "addEditNode", quand la fonction retourne, puis-je voir le contenu de first-> next? La deuxième question est la suivante: dois-je libérer d'abord -> suivant ou est-ce seulement le premier que je devrais libérer? Je cours dans des failles de segmentation sous Linux.Question sur le passage d'un pointeur vers une structure en C à une fonction?
#include <stdio.h>
#include <stdlib.h>
typedef struct list_node list_node_t;
struct list_node
{
int value;
list_node_t *next;
};
void addEditNode(list_node_t *node)
{
node->value = 10;
node->next = (list_node_t*) malloc(sizeof(list_node_t));
node->next->value = 1;
node->next->next = NULL;
}
int main()
{
list_node_t *first = (list_node_t*) malloc(sizeof(list_node_t));
first->value = 1;
first->next = NULL;
addEditNode(first);
free(first);
return 0;
}
Est-ce que c'est ce devoir? Il devrait avoir l'étiquette de devoirs si oui. Au-delà, le code ci-dessus est bien sauf pour votre libre. Vous devez libérer toute la mémoire que vous avez mallocée. Créez une boucle qui traverse la liste, libérant les nœuds au fur et à mesure. –