讓我先描述下……實現這樣一個方法,刪除不帶頭單鏈表中與val值相同的結點方法簽名:ListNode*removeElements(ListNode*head,intval);ListNode類聲明classListNode{public:ListNode(intx):val(x),next(NULL){}intval;ListNode*next;};邏輯很簡單,當//...pre->next=p->next;//...之后,一般的做法是deletep;但這時,有個問題。當主調函數中寫如下調用時,會出內存問題ListNoden0(0),n1(1),n2(2);n0.next=&n1;n1.next=&n2;//...removeElements(&n0,2);n2結點的內存是不可delete的……另外,如果在removeElements方法中不寫delete邏輯,如果主調函數中,鏈表結點是new出來的,則不delete會內存泄露So…我想問一下,在實現類似的C++函數時,有什么一般的做法,或者業內默認規定?或者,有沒有更nice的處理方式?能讓方法比較安全且避免內存泄露多謝:-)
C++鏈表節點刪除方法,如何合適的釋放內存
梵蒂岡之花
2019-04-10 20:48:06