一種理想狀態下的記憶體管理

2021-06-02 19:42:18 字數 714 閱讀 7307

看到csdn上有人提問,我就把自己的想法寫下了。

對於大專案,(尤其是頻繁記憶體操作的高效能專案),系統的記憶體管理功能不那麼好使的。當然,對於一些自帶記憶體管理功能的語言來說,在一定程度上,另當別論。

對於你所說的情況,建議在系統啟動時候,分配足夠多的記憶體,然後自己管理。最簡單的情況,當然是假設你的鍊錶中,每個節點,記憶體大小需求一致了。

對於這種理想情況,我給出一種方法:

寫乙個記憶體管理類,

類中有幾個關鍵變數:start(記憶體起始),end(記憶體結束),這兩個變數在系統初始化時候向os申請的大記憶體決定。那麼既然每個節點大小一樣,就可以把這段記憶體想象成n個節點的乙個連續表。這個表中有兩類塊,一類是已經被用得,另一類是當前可用的。

此外,你得迅速找到當前可用的塊的位置。

我有一種像法師這樣的:在這個類裡有兩個鍊錶,乙個當前可用鍊錶,裡面有當前可用的所有節點,乙個當前正在使用鍊錶,裡面掛著所有當前已經被使用的節點。在初始化時候,當前可用節點,裡面順序存著從start到end的每乙個塊。

分配演算法,從當前可用鍊錶中摘乙個節點,掛入當前正在使用鍊錶。然後你程式獲得這個節點之後,就獲得了,對應位址的記憶體指標。

釋放演算法,清零該節點記憶體,然後將其掛入當前可用煉表裡。

分配複雜度o(1)。對於釋放,效能也可以提高。可以在類分配節點中給出資訊節點首位址。那麼當你需要釋放的時候,你就立刻可以知道,當前你要摘除的節點的位置。

詳細的隨後我做實驗再說啦。現在先這樣。

記憶體池的一種實現

include include include include include const.h include utilityfunc.h include hashtable.h include logmsg.h define system page size 4096 define default...

如何高效撤銷Git管理的檔案在各種狀態下的更改

企業中我們一般採用分布式版本管理工具git來進行版本管理,在團隊協作的過程中,我們難免會遇到誤操作,需要撤銷更改的情況,那麼我們怎麼高效的進行撤銷修改呢?對於還未提交到暫存區的 怎麼高效撤銷更改呢?對於已經提交到暫存區的 怎麼取消add操作?對於已經提交到本地倉庫,還沒有提交到遠端倉庫的 怎麼進行高...

如何高效撤銷Git管理的檔案在各種狀態下的更改

企業中我們一般採用分布式版本管理工具git來進行版本管理,在團隊協作的過程中,我們難免會遇到誤操作,需要撤銷更改的情況,那麼我們怎麼高效的進行撤銷修改呢?對於還未提交到暫存區的 怎麼高效撤銷更改呢?對於已經提交到暫存區和本地倉庫,還沒有提及到遠端倉庫的 怎麼進行高效撤銷更改呢?還有對於已經提交到遠端...