<allocators>
Definuje několik šablon, přidělení a uvolnění bloků paměti pro uzel podle kontejnerů.
#include <allocators>
Poznámky
<allocators> záhlaví obsahuje šest přidělování šablon, které lze vybrat strategie správy paměti pro uzel podle kontejnerů.Pomocí těchto šablon obsahuje také několik různých synchronizace filtrů přizpůsobit strategii správy paměti na řadu různých podprocesů režimů (včetně žádný).Přiřazování paměti strategie využití paměti známé a synchronizace požadavkům konkrétní aplikace lze často zvýšit rychlost nebo snížit celkové požadavky paměti aplikace.
Přidělování šablony jsou implementovány s opakovaně použitelné komponenty, které lze přizpůsobit nebo nahradit poskytnout další správa paměti strategie.
Uzel podle kontejnerů v Standard C++ library (std::list, std::set, std::multiset, std::map a std::multimap) ukládat jejich prvků v jednotlivých uzlech.Všechny uzly typu určitého kontejneru jsou stejné velikosti, takže není potřebná pružnost správce univerzální paměti.Velikost každého bloku paměti je známo, že v době kompilace, správce paměti může být mnohem jednodušší a rychlejší.
Při použití s kontejnery, které nejsou založeny uzlu (například Standard C++ library kontejnerů std::vector std::deque a std::basic_string), alllocator šablony budou fungovat správně, ale nejsou může zajistit zlepšení výkonu nad přidělování výchozí.
Přidělování je šablona třídy, který popisuje objekt, který spravuje úložiště přidělení a uvolnění objektů a objektů určeného typu pole.Přidělování objekty jsou používány více tříd kontejneru šablona Standard C++ library.
Allocators jsou všechny šablony tohoto typu:
template<class Type>
class allocator;
Pokud argument šablony Type je typ řídí přidělování instance.Knihovna Standard C++ poskytuje výchozí přidělování, šablony třídy přidělování, která je definována v <memory>.<allocators> záhlaví obsahuje následující allocators:
Při vytváření kontejneru, jako je například následující kód, použijte příslušné instance přidělování jako druhý argument typu.
#include <list>
#include <allocators>
std::list<int, stdext::allocators::allocator_chunklist<int> > _List0;
Uzly se přiděluje _List0 allocator_chunklist a výchozí filtr synchronizace.
Použijte makro ALLOCATOR_DECL (<allocators>) k vytváření šablon přidělování s filtry synchronizace výchozí:
#include <list>
#include <allocators>
ALLOCATOR_DECL(CACHE_CHUNKLIST, stdext::allocators::sync_per_thread, Alloc);
std::list<int, alloc<int> > _List1;
Uzly se přiděluje _Lst1 allocator_chunklist a sync_per_thread filtr synchronizace.
Přidělování bloku je mezipaměť nebo filtr.Mezipaměť je šablona třídy, která trvá jeden argument typu std::size_t.Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti.Musí získat paměť pomocí operátoru new, ale ji nemusí samostatné volání operátor new pro každý blok.To může například suballocate z větší bloku nebo mezipaměti bloků pro následné přerozdělení platný.
Hodnota argumentu _Sz předán do funkce členů do mezipaměti s kompilátorem, který nelze zkompilovat opětného navázání spojení, hodnota argumentu std::size_t při byla vytvořena šablona není nutně přidělit a navrátit.
<allocators> poskytuje následující šablony v mezipaměti:
Filtr je blok přidělování, implementuje pomocí jiného bloku přidělování ji je předán jako argument šablona členské funkce.Nejběžnější formou filtr je filtr synchronizace použije synchronizace zásady pro řízení přístupu k funkce členů instance přidělování jiného bloku.<allocators> poskytuje následující filtry synchronizace:
<allocators> také obsahuje filtr rts_alloc, který drží více přidělování bloku instancí a určuje, která instance pro přidělování a navracení zpět běhu místo v čase kompilace.Používá se s kompilátory, které nelze zkompilovat opětného navázání spojení.
Synchronizace zásad určuje, jak instanci modulu přidělování zpracovává požadavky současných přidělování a navracení zpět z více podprocesů.Nejjednodušší zásad je předat všechny požadavky přímo přes základní objekt mezipaměti ponechat Správa synchronizace pro uživatele.Složitější zásad může být serializovat přístup k základní objekt mezipaměti pomocí objekt mutex.
Kompilátor podporuje sestavování jednovláknové i vícevláknové aplikace, je výchozí filtr synchronizace pro jednovláknové aplikace sync_none; pro všechny případy je sync_shared.
Mezipaměť šablony cache_freelist trvá max třídy argument, který určuje maximální počet prvků uložené v seznamu zdarma.
<allocators> poskytuje maximální následujících tříd:
Makra
Výnosy přidělování šablonu třídy. |
|
Yields stdext::allocators::cache_chunklist<sizeof(Type)>. |
|
Yields stdext::allocators::cache_freelist<sizeof(Type), max>. |
|
Yields stdext::allocators::cache_suballoc<sizeof(Type)>. |
|
Výnosy filtr synchronizace. |
Operátory
Zkoušky nerovnost mezi přidělování objekty dané třídy. |
|
Testy pro rovnost mezi přidělování objekty dané třídy. |
Třídy
Definuje základní třídy a běžné funkce potřebné k vytvoření uživatelem definované alokátorem z filtr synchronizace. |
|
Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty používající mezipaměť typu cache_chunklist. |
|
Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty typu Type použití mezipaměti typu cache_freelist s délkou spravované max_fixed_size. |
|
Implementuje přidělování, který používá operator delete k přidělení paměti bloku a operator new přidělit blok paměti. |
|
Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty typu Type použití mezipaměti typu cache_suballoc. |
|
Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty typu Type použití mezipaměti typu cache_freelist s délkou spravované max_unbounded. |
|
Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty typu Type použití mezipaměti typu cache_freelist s délkou spravované max_variable_size. |
|
Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti. |
|
Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti. |
|
Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti. |
|
Spravuje seznam bloků paměti. |
|
Popisuje max třídy objektu, který omezuje freelist objekt pevné maximální délku. |
|
Popisuje max třídy objektu, který omezuje freelist objektu maximální délku nula. |
|
Popisuje max třídy objektu, který není omezen maximální délku freelist objektu. |
|
Popisuje max třídy objektu, který omezuje freelist objektu na maximální délku, která je úměrná zhruba počet přidělených bloků paměti. |
|
Popisuje šablony třídy rts_alloc Filtr obsahující pole mezipaměť instancí a určuje, která instance pro přidělování a navracení zpět běhu místo v čase kompilace. |
|
Popisuje filtr synchronizace, který poskytuje žádná synchronizace. |
|
Popisuje poskytující samostatnou mezipaměť objektů pro každý objekt přidělování filtr synchronizace. |
|
Popisuje filtr synchronizace, která poskytuje objekt samostatnou mezipaměť pro každý podproces. |
|
Popisuje filtr synchronizace, který používá k řízení přístupu k mezipaměti objektu, který sdílí všechny allocators objekt mutex. |
Požadavky
Záhlaví: <allocators>
Obor názvů: stdext