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