STL之自己實現簡單地空間配置器allocater

2021-10-10 04:27:06 字數 1481 閱讀 2718

size_t是unsigned型別,用於指明陣列長度或下標,它必須是乙個正數,std::size_t

ptrdiff_t是signed型別,用於存放同一陣列中兩個指標之間的差距,它可以使負數,std::ptrdiff_t.

size_type是unsigned型別,表示容器中元素長度或者下標,vector::size_type i = 0;

difference_type是signed型別,表示迭代器差距,vector:: difference_type = iter1-iter2.

當operator new申請乙個記憶體失敗的時候,它會進行如下的處理步驟:

1、如果存在客戶指定的處理函式,則呼叫處理函式(new_handler),如果不存在則丟擲乙個異常。

2、繼續申請記憶體分配請求。

3、判斷申請記憶體是否成功,如果成功則返回記憶體指標,如果失敗轉向處理步驟1

為了自定義這個「用以處理記憶體不足」的函式new_handler,使用者可以呼叫set_new_handler進行設定

這兩個函式宣告如下:

namespace std

return tmp;

}template

<

class

t>

inline

void

_deallocate

(t* buffer)

template

<

classt1,

class

t2>

inline

void

_construct

(t1*p,

const t2&value)

template

<

class

t>

inline

void

_destroy

(t*ptr)

template

<

class

t>

class

allocater

; pointer allocate

(size_type n,

const

void

*hint =0)

void

deallocate

(pointer p, size_type n)

void

construst

(pointer p,

const t&value)

void

destroy

(pointer p)

pointer address

(reference x)

const_pointer const_address

(const_reference x)

size_type max_size()

const};

}#endif _zytalloc_

intmain()

STL 實現簡單的空間配置器

實現方式 stl原始碼中的空間配置器的實現分為一級與二級空間配置器 所謂的一級空間配置器 實現特點 直接使用malloc函式申請記憶體 自定義清除函式 當malloc失敗之後,呼叫清除函式來釋放一部分的記憶體空間,以便malloc的成功 假設呼叫清除函式之後,還是malloc失敗的話,就需要丟擲異常...

STL之空間配置器

空間配置器allocator負責空間的配置和管理,是一種實現了動態空間配置 空間管理 空間釋放的class template。1.空間配置器的標準介面 allocator value type allocator pointer allocator const pointer allocator r...

STL之空間配置器

最近在看侯捷老師寫的stl原始碼剖析,想通過看優秀的 來提高自己的程式設計水平。首先stl提供了六大元件,彼此可以套用使用。借助一張從書上截的圖來表明 container通過allocator來獲取資料儲存空間 algorithms通過迭代器來獲取container的內容,functors可以協助a...