J'implémente un programme de liste chaînée en C et la fonction create_node donne un avertissement: function retourne l'adresse de la variable locale. J'ai lu sur l'utilisation de malloc, mais je voudrais comprendre ce que le problème et la solution d'origine seraient sans elle. Merci.La fonction de liste liée renvoie l'adresse de la variable locale
struct list_node_s* Create_node(int val, struct list_node_s* node_p) {
struct list_node_s temp;
temp.data = val;
temp.next_p = node_p;
return &temp;
} /* Create_node */
Related https://stackoverflow.com/q/4824342/694576 s'il ne s'agit pas d'un doublon. – alk
Il est quelque chose qui est très difficile à expliquer sur une jambe, mais je vais essayer d'être simpale Le problème est lorsque vous créez une variable sans ** malloc ** - Dans les coulisses, vous mettez la variable sur la pile - Segment de la mémoire qui sauvent quelque chose sur votre segment de code actuel. – Bizzu
Lorsque vous sautez pour fonctionner, vous ajoutez des choses à votre pile à partir d'un certain point et quand vous avez fini (retour de la fonction annuler ou annuler la fonction vide) vous libérez toutes les choses que vous enregistrez du point d'entrée. Cela veut dire - dans votre code spécifique, vous essayez de renvoyer l'adresse de quelque chose que vous enregistrez sur la pile, mais lorsque vous revenez, vous libérez la pile - vous essayez de renvoyer ce que vous avez "libéré". . – Bizzu