1樓:匿名使用者
你好,你這個時候不能用free(pdel),因為這個時候pdel已經不再指向6這個節點了。而是指向7.你應該另外定義一個指標變數p當pdel找到6時,先讓p = pdel,這樣p就指向6了,然後再pdel->next=pdel->next->next,最後free(p)即可。
不懂可以追問~
2樓:徐哼哼
在執行pdel->next=pdel->next->next;之前用一個變數指向6這個節點,在執行pdel->next=pdel->next->next;讓後在free掉6這個節點就好了。而你現在的**是先刪除了,那麼等你再想刪除6這個節點的時候你就找不到這個位置了;
3樓:匿名使用者
你的描述不太正確,按你的說法寫**片段如下:
struct 結構名 * tmp=pdel->next; (刪除前,先把6的節點地址賦值給一個臨時變數)
pdel->next=pdel->next->next; (從連結串列中,把節點6移除)
free(tmp); (釋放6節點的記憶體空間)你是這樣做的嗎?這樣不會釋放6以後的節點。不知道你為什麼會說會釋放6以後的節點?
C記憶體釋放,c 記憶體釋放問題
1 這個流程確實構造了許多新的物件 panel bitmapimage button 所以記憶體 是必然的 2 其次,由於c 託管的原因,有些臨時記憶體在頻繁的迴圈中可能來不及釋放,你可以在每次迴圈結束時呼叫gc.gettotalmemory true 來強制 當前的垃圾 如果強制gc還不行的話,那...
C語言的問題C語言問題C語言問題
若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...
C語言問題,c語言問題?
一 c語言規定總是從main 開始執行的 這個函式也叫 主函式 因此,你發來的題目中的 1 6 8 敘述都是錯誤的,都應該選擇f。二 第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。三 第3題,c語言中強制...