共用方式為


<allocators>

定義可協助配置及釋放節點容器的記憶體區塊的範本。

#include <allocators>

備註

<allocators> 標題提供可以用來以節點的容器 (Container) 選取記憶體管理策略的六個配置器範本。 為具有這些範本的使用,並提供數種不同的同步處理篩選條件為記憶體管理策略特製建置的各種不同的多執行緒的配置 (包括沒有)。 比對記憶體管理策略為已知記憶體使用模式和同步要求,特定應用程式通常可以增加速度或減少應用程式的整體記憶體需求。

配置器範本實作可以自訂或取代提供額外的記憶體管理策略的可重複使用的元件。

根據節點的容器在 Standard C++ 程式庫 (std::list、std::set、std::multiset、std::map 和 std::multimap) 中的個別節點儲存其項目。 特定容器型別的任何節點都是相同大小,因此,一般用途記憶體管理員的彈性不需要的。 因為每個記憶體區塊的大小在編譯時期已知,記憶體管理員可能會比較簡單的速度也比較快。

與一起使用時沒有節點根據的容器 (例如 Standard C++ 程式庫容器 std::vector std::deque 和 std::basic_string), alllocator 範本也會正確運作,但是,無法提供比預設配置器的任何效能提升。

配置器都是描述物件處理儲存配置和釋放物件和陣列的指定型別之物件的樣板類別。 幾個容器樣板類別使用配置器物件在 Standard C++ 程式庫中的型別。

配置器都是這個型別的所有範本:

template<class Type>

class allocator;

若範本引數 Type 配置器是執行個體處理的型別。 Standard C++ 程式庫提供了預設的配置器,樣板類別 配置器,在 <memory>定義。 <allocators> 標題提供下列配置器:

然後,建立一個容器,如下列程式碼範例中,請使用配置器的適當執行個體化做為第二個型別引數。

#include <list>

#include <allocators>

std::list<int, stdext::allocators::allocator_chunklist<int> > _List0;

_List0 配置的 allocator_chunklist 和預設同步處理篩選條件的節點。

預設值之外,使用巨集 ALLOCATOR_DECL (<allocators>) 需要同步處理篩選建立配置器範本:

#include <list>

#include <allocators>

ALLOCATOR_DECL(CACHE_CHUNKLIST, stdext::allocators::sync_per_thread, Alloc);

std::list<int, alloc<int> > _List1;

_Lst1 配置的 allocator_chunklist 和 sync_per_thread 同步處理篩選條件的節點。

區塊配置器都是快取或篩選條件。 快取是採用型別 std::size_t 的引數的樣板類別。 它會定義配置和解除配置單一大小的記憶體區塊的一個區塊配置器。 使用運算子 new,它必須取得記憶體,但是,並不需要對產生個別對各區塊的運算子 new 。 它可以,例如,從較大的區塊或快取中解除配置的記憶體區塊的 suballocate 後續轉散發的。

使用無法重新編譯的編譯器 std::size_t 引數的值所使用的範本時具現化 (Instantiated) 為引數 _Sz 的值傳遞至快取的成員函式不一定配置和解除配置。

<allocators> 提供下列快取範本:

篩選條件是實作它的成員函式使用另一個區塊配置器傳遞給它的樣板引數的區塊配置器。 篩選條件最常見的形式是同步的篩選條件,則需要同步處理原則套用至另一個區塊配置器執行個體成員函式的存取。 <allocators> 提供下列同步處理篩選條件:

<allocators> 也提供篩選條件 rts_alloc,保存多個區塊配置器執行個體並判斷要使用哪一個執行個體進行配置和解除配置在執行階段而非編譯時期。 它會使用無法編譯重新繫結的編譯器。

同步處理原則判斷配置器執行個體如何處理從多重執行緒同時配置和解除配置要求。 最簡單的原則是直接透過所有要求傳遞至基礎快取物件,保持同步處理管理給使用者。 更複雜的原則可使用 Mutex 序列化為基礎快取物件的存取。

如果編譯器支援編譯單一執行緒的和多執行緒應用程式中,單一執行緒應用程式的預設同步處理篩選條件是 sync_none;如果是所有的其他案例是 sync_shared。

快取範本 cache_freelist 採用判斷發生起來儲存項目的最大數目的最大值之型別的型別引數。

<allocators> 提供下列最大類別:

Ee292134.collapse_all(zh-tw,VS.110).gif巨集

ALLOCATOR_DECL (<allocators>)

產生範本配置器類別。

CACHE_CHUNKLIST (<allocators>)

產生 stdext::allocators::cache_chunklist<sizeof(Type)>。

CACHE_FREELIST (<allocators>)

產生 stdext::allocators::cache_freelist<sizeof(Type), max>。

CACHE_SUBALLOC (<allocators>)

產生 stdext::allocators::cache_suballoc<sizeof(Type)>。

SYNC_DEFAULT (<allocators>)

產生同步處理篩選條件。

Ee292134.collapse_all(zh-tw,VS.110).gif運算子

operator!= (<allocators>)

不相等的測試在指定類別的配置器物件之間。

operator== (<allocators>)

相等的測試在指定類別的配置器物件之間。

Ee292134.collapse_all(zh-tw,VS.110).gif類別

allocator_base

定義必要的基底類別 (Base Class) 和一般函式會從同步處理篩選條件的其中一個使用者定義的配置器。

allocator_chunklist

描述管理儲存配置和釋放物件所使用的快取 cache_chunklist型別的物件。

allocator_fixed_size

描述管理儲存配置和釋放型別 Type 物件的使用快取。 max_fixed_size處理長度的型別 cache_freelist 的物件。

allocator_newdel

實作使用 operator delete 解除配置記憶體區塊和 operator new 配置記憶體區塊中的配置器。

allocator_suballoc

描述管理儲存配置和釋放型別 Type 物件使用物件快取 cache_suballoc型別的物件。

allocator_unbounded

描述管理儲存配置和釋放型別 Type 物件的使用快取。 max_unbounded處理長度的型別 cache_freelist 的物件。

allocator_variable_size

描述管理儲存配置和釋放型別 Type 物件的使用快取。 max_variable_size處理長度的型別 cache_freelist 的物件。

cache_chunklist

定義配置和解除配置單一大小的記憶體區塊的一個區塊配置器。

cache_freelist

定義配置和解除配置單一大小的記憶體區塊的一個區塊配置器。

cache_suballoc

定義配置和解除配置單一大小的記憶體區塊的一個區塊配置器。

freelist

處理常式存放區清單。

max_fixed_size

描述一個最大類別物件限制內建的最大長度的 freelist 物件。

max_none

描述一個最大類別物件限制的最大長度的 freelist 物件的零。

max_unbounded

描述不限制 freelist 物件的最大長度的最大類別物件。

max_variable_size

描述一個最大類別物件限制大約比例的配置的記憶體區塊數的最大長度的 freelist 物件。

rts_alloc

保留快取執行個體的 rts_alloc 樣板類別描述 篩選條件 並判斷要使用哪一個執行個體的配置和解除配置在執行階段而非編譯時期。

sync_none

描述並不提供同步處理的同步處理篩選條件。

sync_per_container

說明每個配置器物件提供不同的快取物件的同步處理篩選條件。

sync_per_thread

描述針對每一個執行緒提供不同的快取物件的同步處理篩選條件。

sync_shared

描述使用一個 Mutex 控制項快取物件的存取是同步處理所有配置器共用的篩選條件。

需求

標題: <allocators>

命名空間: stdext

請參閱

其他資源

標頭檔