為什麼這裡要用exit而不是return ERROR?

時間 2021-06-13 10:19:37

1樓:李昕

1.enqueue方法中,exit是在p指標為空時呼叫的(你的insert 資料因為佇列長度不夠而無法插入)。呼叫目的為傳回overflow訊息,按照一般設計情況,overflow並不是設計錯誤,overflow的情況發生後,程式要做的是申請新的儲存空間儲存insert資料繼續執行。

因此,注意,這不是錯誤。不需要中止執行,你return false;return error;目的是為了中止程式。如果你的程式因為預先申請空間不足就阻止一切後續操作,那才是bug。

舉個例子,老師讓你寫作業,你寫到一半,本子沒了。第二天,回覆老師本子不夠沒寫完,會發生什麼?程式也是這樣。

呼叫方申請的是正確且合乎邏輯的請求,程式要完成目標,資源不夠,要申請新的資源繼續進行。

exit 的目的就是切出去「找本子」,exit方法不會造成enqueue方法中止。找完本子,exit方法執行完,繼續執行插入操作。

舉個例子,就好比老師讓你明天數1億粒公尺帶學校去。這是不可能實現的任務,要被中止(避免發生錯誤、記憶體無意義占用等嚴重後果),給他處罰(容錯)。

我察覺到你搞了個錯誤,比如,讓我0元錢的資本給你找10塊,這是不可能完成的事務,如果我一直卡在這個事情上後面什麼都做不了(死鎖)。return就直接中止了後面一切支付行動,進入扯架環節。

更正一下,p的上面那句是分配新的空間。所以我第一段說的有誤。申請了新空間以後,p為空只能是分配失敗的情況,所以exit跳去系統。

這個無法解決的問題只能由系統去管理。return則不會直接達到回退系統級別的報錯(return回上一級,如果這個enqueue被其他方法呼叫,則回到呼叫他的方法中。malloc失敗可能是嚴考慮此事要著重處理的原因),這個我進行修正。

這裡為什麼要用is而不是are呢?

arco The potential evolution of today s technology,and its social consequences,isdazzlingly complicated,and it s perhaps best left to science fiction ...

為什麼SpaceX要用「人類製造」而不是「美國製造」的字樣?

MzsT4 可以說馬斯克從一開始去美國的目的就是為了自己的夢想,美國只是實現他偉大夢想的乙個跳板。毫無疑問,為了去美國,馬斯克已經深思熟慮了很長時間。馬斯克早期對於計算機和科技的興趣使他對矽谷產生了強烈的嚮往。而那些海外之旅又令他深信美國是成事之地。相反,南非為創業者提供的機會少之又少。就像金巴爾所...

為什麼錢幣要用1,2,5而不是1,2,4或1,3,5之類?

夢幻華策 其實不考慮實際使用的話,用3個數字拼湊1 10十個數字應該是1 3 4最優,但是使用了125,我感覺是出於一些其他方面的考慮。1.本福特法則 2.十進位制使用的便利性 3.歷史和中外的對接遺留問題 據大學的老師說,建國初期是有3元的紙幣的,但是3元紙幣的模板被蘇聯給偷走了,然後所有的3元紙...