用c 寫銀行家演算法的感想

2021-05-23 18:21:43 字數 898 閱讀 7600

就銀行家演算法而言,其本身不難,在這個實驗裡我用了陣列結構來表示資源的占有、申請、以及最大需求量。但是對於陣列的操作確實是乙個頭疼的問題,我不可能總是去遍歷陣列進行陣列的加減 賦值  比較大小的運算,為此 我首先想到的是符號過載 期望能夠用+->《號等進行直接的運算,想法是好的,但是操作起來 讓我相當頭疼。

1.我想要我的符號都能實現整型陣列的算術運算與邏輯運算,而不侷限於我的物件,結果操作符過載總是要求至少要有乙個類型別。後來查資料,知道 這是c++一種保護機制,防止基本型別的運算規則被開發者隨意更改。

2.我使用了指標來指向陣列,在實際應用中往往一不小心就會出現陣列賦值的時候,不同指標指向同一塊記憶體空間,使得在後面程式執行中把這塊區域的資料給改了 ,影響了共用的這塊區域各指標所要表達的內容。導致執行混亂的問題。更可怕的是記憶體區域管理十分混亂,指標到處亂指,最後我都不知道哪些記憶體沒被釋放掉 出現記憶體空間洩漏問題。

總的來說,是我在搭建這個類的時候,沒把資料結構建好。比如在建立物件的過程中,就必須先為需求量等開闢一塊記憶體空間,而不能只是指標,在這裡我想說下,指標是個很靈活的東西,可以指向任何的記憶體單元,這時候要注意,陣列的賦值可不能只是簡單的指標間賦值,這樣根本不能實現陣列空間之間的資料更改,反而會導致被賦值的那塊陣列在記憶體空間中丟失 傳送記憶體洩漏。雖然說這個很基本,很好理解,可是在開發過程中我還是時不時出現這樣的錯誤。

後來我就一怒之下把所有的結構給廢了 重新來寫,這一次我不再利用符號過載了 ,改用自己在類中寫的函式來實現。這樣的

話問題就得到較好的解決,其實我現在想 這樣做也太麻煩了,為何不把這些運算函式直接寫成類的友元函式,這樣不用老是要建立物件去使用。

同時我覺的在開發過程中,務必要對邏輯判斷的地方加以重視,應該事先就要對這些判斷的位置進行規劃即什麼條件怎麼處理。

銀行家演算法 C

銀行家演算法.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std define m 5 程序數 define n 3 資源數 define false 0 define true 1 int ailable n 系統可用資源數...

銀行家演算法

我們可以把作業系統看作是銀行家,作業系統管理的資源相當於銀行家管理的資金,程序向作業系統請求分配資源相當於使用者向銀行家貸款。為保證資金的安全,銀行家規定 1 當乙個顧客對資金的最大需求量不超過銀行家現有的資金時就可接納該顧客 2 顧客可以分期貸款,但貸款的總數不能超過最大需求量 3 當銀行家現有的...

銀行家演算法

銀行家演算法 banker s algorithm 是乙個避免死鎖 deadlock 的著名演算法,是由艾茲格 迪傑斯特拉在1965年為t.h.e系統設計的一種避免死鎖產生的演算法。它以銀行借貸系統的分配策略為基礎,判斷並保證系統的安全執行。就像我們從銀行貸快一樣,首先銀行會考慮到我們有沒有償還能力...