new:指我們在c++裡通常用到的運算子
operator new():指對new的過載形式,它是乙個函式,並不是運算子
函式operator new中呼叫malloc()進行記憶體分配。
malloc實際記憶體分配得到的記憶體空間如下:
new 運算子執行過程:
呼叫operator new分配記憶體(可過載)
呼叫建構函式構造生成類物件
返回相應的指標
最重要的兩個函式:allocate
、deallocate
//呼叫 operator new()
pointer allocator::allocate(size_type n, const void* = 0)
//呼叫 operator delete()
void allocato::deallocate(pointer p, size_type n)
不建議使用,效率不佳,只對c++的::operator new
和::operator delete
做了簡單的包裝在stl實際使用中,並沒有使用allocator
這個分配器。
注意:g4.9以後預設的分配器又變成了allocator;g4.9的__pool_alloc就是g2.9的alloc
16條鍊錶,每一條鍊錶負責不同大小的區塊。第0條負責8位元組大小,以8位元組大小增長
優點:減少記憶體分配時多餘空間的分配
《STL原始碼剖析》之分配器
對於分配器的要求,應滿足c 標準中的幾個函式 1.分配器應是乙個模板類,設型別為t 2.模板類物件應有public t allocate int n 功能,分配一段長為至少為n typesize的記憶體 原始,未構造 儲存n個型別為t的物件,返回指向分配記憶體頭部的t型別指標 3.應該有deallo...
STL的記憶體分配器
題記 記憶體管理一直是c c 程式的 關於記憶體管理的話題,大致有兩類側重點,一類是記憶體的正確使用,例如c 中new和delete應該成對出現,用raii技巧管理記憶體資源,auto ptr等方面,很多c c 書籍中都使用技巧的介紹。另一類是記憶體管理的實現,如linux核心的slab分配器,st...
STL的記憶體分配器
分類 c c stl 2011 04 04 18 34 1689人閱讀收藏 舉報list 演算法vector linux核心 byte raii 題記 記憶體管理一直是c c 程式的 關於記憶體管理的話題,大致有兩類側重點,一類是記憶體的正確使用,例如c 中new和delete應該成對出現,用rai...