簡體   English   中英

刪除雙向鏈接列表中的動態分配內存后會發生什么?

[英]What happens to dynamically allocated memory in a doubly-linked list when it's deleted?

假設我有一個雙向鏈接列表,該列表具有一個指向第一個節點“ first”的指針。 現在,假設我要為此雙向鏈接列表創建一個函數,以刪除“第一個”節點(假設該函數完成了第二個圖片中的操作;即,一個新的指針節點已聲明為先前的第一個和第一個節點已被迭代一次)。 現在我的問題是:如果我先刪除新的,那么first的PREV現在是否指向NULL? 如果沒有,它指向什么? 本質上,我想知道是否需要顯式定義first-> PREV = NULL或刪除新的first是否會完成相同的任務。

注意:如果不清楚,則向上箭頭表示PREV,向下箭頭表示NEXT。

在此處輸入圖片說明

您需要明確地做到這一點。 取消分配對象時,指向該對象的指針不會重置為null; 他們懸而未決。

當您調用delete時,您只是釋放該內存,如果指針指向該內存區域,則其值不會改變。
因此,在刪除節點的函數中,您還必須將指向已刪除區域的指針設置為NULL(或nullptr)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM