鍊錶有三個成員乙個int,和char 陣列,以及指向本結構指標,為什麼注釋掉char陣列就報錯?

時間 2021-06-01 14:28:54

1樓:

在你while迴圈的地方有錯誤,首先先用意義臨時的結構體指標接收要被你free的節點,然後再讓你的context指向next ,最後再free 你想要free的那個儲存臨時節點的臨時結構體指標 (free完之後要將臨時物件置空,建議而已)

2樓:樹狀

補充說說為什麼有asdf不會報錯。

堆的管理,通常會在一塊空閒空間的開頭部分儲存控制資訊。釋放一塊空間後,堆管理程式馬上會把控制資訊寫入到空間的開頭。

沒有asdf時,current->next欄位被控制資訊覆蓋,指向了無效位置所以出錯;有asdf時,控制資訊部分寫入到了asdf而沒有覆蓋到next,所以程式依然能夠執行。

3樓:Ivan Lu

free那裡錯了,你可以寫個臨時變數struct node*qcurrent = head;

while(current!= NULL){printf("current:%x\n",current);

q=current;

current = current->next;

free(q);

4樓:

問題不出在char陣列,而是在free()時,你已經將current指向的空間釋放了,然後再讓current=current->next;

而這時候next已經不存在了。

需要用乙個額外的指標先記住next,再free(current)然後讓current=這個額外指標。

仔細看看這一段就行了

鍊錶中的哨兵是怎麼乙個作用?

宇佐見蓮子 萌新正在自學演算法導論正好看見這個問題 1.A sentinel is a dummy object that allows us to simplify boundary conditions.哨兵是用來簡化邊界問題的虛設物件 2.As shown in Figure 10.4,thi...

乙個接近50歲上有三個老人下有三個小孩的中年人該不該把所有的錢拿去創業?為什麼?

不懂的小白 不應該!建議您合理規劃下自己的財富,比如看每年家裡最低消費者要花掉多少錢,然後給自己多少錢創業的時間,比如3年,ok 那建議您留4年多的生活費,剩餘的錢可以拿來創業。這樣你創業的時候心態會相對比較平和,能有乙個規劃,今年做到什麼程度,明年做到什麼程度。如果不能確保自己和家庭日常開支的話,...

四個同樣的電阻三個串聯後與乙個併聯比三個併聯後再與乙個串聯的電阻值大還是小?

Colin 三個串聯再與乙個併聯的更小 併聯等效電阻比其中任一支路的電阻要小,三串一併,等效電阻小於乙個電阻而三並一串,大於乙個電阻阻值。這是快速判斷的方法,要得到精確值還要計算一下 在解答本題時,先說說電阻的串聯電路和併聯電路。如果電路中有兩個或更多個電阻乙個接乙個地順序相聯,並且在這些電阻中通過...