0
我在C中实现了一个链表程序,create_node函数给出了一个警告:函数返回局部变量的地址。我已阅读关于使用malloc,但我想了解没有它的原始问题和解决方案。谢谢。链接列表函数返回本地变量的地址
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 */
相关https://stackoverflow.com/q/4824342/694576如果不是重复的。 – alk
这是一件很难解释的一条腿,但我会试图成为simpale 问题是当你创建一个变量没有** malloc ** - 幕后你把变量放在堆栈上 - 内存段这节省了您当前代码段的一些问题。 – Bizzu
当你跳转到函数时,你从某个点向你的堆栈添加东西,当你完成时(从无效函数返回或完成void函数),你从入口点释放所有你保存的东西。 这意味着 - 在您的特定代码中,您尝试返回您保存在堆栈中的某个地址的地址,但是当您返回时释放堆栈 - 您尝试返回您“释放”的某些东西。 。 – Bizzu