C 記憶體池的極簡版實現

2021-06-12 08:25:54 字數 578 閱讀 7496

當在乙個函式中需要大量使用new來申請臨時用的陣列或物件時,用完之後需要對每乙個new出來的陣列進行釋放,特別當乙個函式特別長的時候,(如在我廠的系統中,1000行的函式是經常的),要去找出之前寫的每乙個new然後寫對應的delete,這是極不美觀且易漏掉的,因此使用自己的記憶體管理方案是很有好處的:

1.程式設計師可以盡情地new,不用負責釋放

2.使用記憶體池一次性申請一大段連續的記憶體,之後都在這一段記憶體上工作,減少記憶體碎片和系統呼叫次數

3.程式執行過程中發生的缺頁次數應該會少一些

首先,定義buffer類:

using namespace std;

class buffer

void* get(size_t size)

void printsize()

void* operator new (size_t size, buffer* buffer) //過載new操作符

void* operator new (size_t size, buffer* buffer) //過載new操作符

C 記憶體池的極簡版實現

當在乙個函式中需要大量使用new來申請臨時用的陣列或物件時,用完之後需要對每乙個new出來的陣列進行釋放,特別當乙個函式特別長的時候,如在我廠的系統中,1000行的函式是經常的 要去找出之前寫的每乙個new然後寫對應的delete,這是極不美觀且易漏掉的,因此使用自己的記憶體管理方案是很有好處的 1...

極簡版shared ptr實現

程式如下 標頭檔案 ifndef pch h define pch h include includeusing namespace std class like shared ptr 接受指標的建構函式 like shared ptr string a location a number new ...

c 11 簡約版記憶體池實現

使用c 11的智慧型指標實現乙個簡約版的記憶體池 件 created by 李文龍 on 2019 12 1.ifndef thread tool test memory pool h define thread tool test memory pool h include common.h in...