Sdílet prostřednictvím


<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:

Ee292134.collapse_all(cs-cz,VS.110).gifMakra

ALLOCATOR_DECL (<allocators>)

Výnosy přidělování šablonu třídy.

CACHE_CHUNKLIST (<allocators>)

Yields stdext::allocators::cache_chunklist<sizeof(Type)>.

CACHE_FREELIST (<allocators>)

Yields stdext::allocators::cache_freelist<sizeof(Type), max>.

CACHE_SUBALLOC (<allocators>)

Yields stdext::allocators::cache_suballoc<sizeof(Type)>.

SYNC_DEFAULT (<allocators>)

Výnosy filtr synchronizace.

Ee292134.collapse_all(cs-cz,VS.110).gifOperátory

operator!= (<allocators>)

Zkoušky nerovnost mezi přidělování objekty dané třídy.

operator== (<allocators>)

Testy pro rovnost mezi přidělování objekty dané třídy.

Ee292134.collapse_all(cs-cz,VS.110).gifTřídy

allocator_base

Definuje základní třídy a běžné funkce potřebné k vytvoření uživatelem definované alokátorem z filtr synchronizace.

allocator_chunklist

Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty používající mezipaměť typu cache_chunklist.

allocator_fixed_size

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.

allocator_newdel

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.

allocator_suballoc

Popisuje objekt, který spravuje úložiště přidělení a uvolnění pro objekty typu Type použití mezipaměti typu cache_suballoc.

allocator_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_unbounded.

allocator_variable_size

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.

cache_chunklist

Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti.

cache_freelist

Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti.

cache_suballoc

Definuje přidělování bloku, který přiděluje a zruší přidělení jedné velikosti bloků paměti.

FreeList

Spravuje seznam bloků paměti.

max_fixed_size

Popisuje max třídy objektu, který omezuje freelist objekt pevné maximální délku.

max_none

Popisuje max třídy objektu, který omezuje freelist objektu maximální délku nula.

max_unbounded

Popisuje max třídy objektu, který není omezen maximální délku freelist objektu.

max_variable_size

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.

rts_alloc

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.

sync_none

Popisuje filtr synchronizace, který poskytuje žádná synchronizace.

sync_per_container

Popisuje poskytující samostatnou mezipaměť objektů pro každý objekt přidělování filtr synchronizace.

sync_per_thread

Popisuje filtr synchronizace, která poskytuje objekt samostatnou mezipaměť pro každý podproces.

sync_shared

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

Viz také

Další zdroje

Soubory hlaviček