Aracılığıyla paylaş


<allocators>

Tahsis ve kapsayıcı düğümü tabanlı bellek bloklarını boşaltmak yardımcı çeşitli şablonları tanımlar.

#include <allocators>

Notlar

<allocators> üst düğüm tabanlı kapsayıcılar için bellek yönetimi stratejileri seçmek için kullanılan altı ayırıcısı şablonları sağlar.Bu şablonlar ile kullanmak için bellek yönetimi stratejisi (none dahil) farklı çoklu kullanım düzenlerini çeşitli uyarlamak için birkaç farklı eşitleme filtreleri de sağlar.Bellek yönetimi stratejisi bilinen bellek kullanım desenlerini ve eşitleme gereksinimlerini, belirli bir uygulama için eşleşen genellikle hızını artırmak veya uygulamanın genel bellek gereksinimlerini azaltır.

Ayırıcı templates özelleştirilmiş veya ek bellek yönetimi stratejileri sağlamak yerine, yeniden kullanılabilir bileşenler ile uygulanır.

Standart C++ Kitaplığı (std::list, std::set, std::multiset, std::map ve std::multimap) düğümü tabanlı kaplarında öğelerini tek tek düğümleri depolayın.Esneklik genel amaçlı Bellek Yöneticisi'nin gerekli olmadığı için belirli bir kapsayıcı türü için tüm düğümler aynı boyutta olacaktır.Her bellek bloğunun boyutu derleme zamanında bilindiğinden, bellek yöneticisi çok daha kolay ve daha hızlı olabilir.

(Standart C++ Kitaplığı kapsayıcıları std::vector std::deque ve std::basic_string gibi) düğümü dayalı olmayan kapsayıcıları ile kullanıldığında, alllocator şablonlar düzgün çalışır, ancak varsayılan ayırıcı herhangi bir performans geliştirme sağlamak olası değildir.

Bir ayırıcı depolama ayırma ve nesneleri ve belirtilen türdeki nesnelerin diziler için boşaltma yöneten bir nesneyi tanımlayan bir şablon sınıfıdır.Ayırıcı nesnelerinin standart C++ Kitaplığı'nda birkaç kap şablon sınıfları tarafından kullanılır.

Ayırıcılarına bu türdeki tüm şablonlar şunlardır:

template<class Type>

class allocator;

Burada şablon değişkenini Type ayırıcı örneği tarafından yönetilen türüdür.Standart C++ Kitaplığı, varsayılan ayırıcı, şablon sınıfını sağlar ayırıcı, hangi tanımlanmış <memory>.<allocators> üstbilgisi aşağıdaki ayırıcılarına sağlar:

Uygun bir örneğini oluşturmada bir ayırıcı, aşağıdaki kod örneği gibi bir kapsayıcı oluştururken, ikinci tür bağımsız değişkeni olarak kullanın.

#include <list>

#include <allocators>

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

_List0 ayırır düðümleri ile allocator_chunklist ve varsayılan eşitleme filtresi.

Makroyu kullanmak ALLOCATOR_DECL (<allocators>) ayırıcı şablonları varsayılan dışında eşitleme filtreleri oluşturmak için:

#include <list>

#include <allocators>

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

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

_Lst1 ayırır düðümleri ile allocator_chunklist ve sync_per_thread Eşitleme Filtresi.

Blok ayırıcı bir önbellek veya bir filtre olabilir.Bir önbellek götüren bir bağımsız değişken türü std::size_t, şablonu bir sınıftır.Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar.İşlecini kullanarak bellek edinmelisiniz new, ancak ayrı bir işleç çağrı olmamasını new her bloğu.Bu örneğin, daha büyük blok veya sonraki yeniden tahsisat bloklar ayırmanın önbellek suballocate.

Kullanılan şablon örneği std::size_t bağımsız değişkeninin değeri olmak zorunda değil yeniden bağlanma derlenemiyor derleyici önbelleği 's üye işlevleri için geçirilen bağımsız değişken _Sz değerinin ayırmak ve serbest bırakmak.

<allocators> Aşağıdaki önbellek şablonlar sağlar:

Kendisine bir şablon bağımsız değişken olarak geçirilen başka bir blok ayırıcıyı kullanarak üye işlevleri gerçekleştiren bir blok ayırıcı bir filtredir.En sık kullanılan filtre örneğini başka bir blok ayırıcı üye işlevlerine erişimi denetlemek için eşitleme ilkesi uygulanır eşitleme filtresi biçimidir.<allocators> Aşağıdaki eşitleme filtreleri sağlar:

<allocators> Ayrıca filtre sağlar rts_alloc, birden fazla Blok ayırıcı tutan, örnekler ve ayırma veya derleme zamanında yerine zamanında ayırmayı kaldırma için hangi örneği belirler.Yeniden bağlanma derlenemiyor derleyicileri ile kullanılır.

Eşitleme İlkesi, bir ayırıcı örneği birden çok iş parçacığı tarafından aynı anda ayırma ve ayırmayı kaldırma isteklerini nasıl işleyeceğini belirler.En basit aracılığıyla tüm istekleri doğrudan eşitleme yönetimi kullanıcı bırakarak arka plandaki cache nesnesi geçmesini ilkedir.Daha karmaşık bir ilke önbellek nesnesini access seri hale getirmek için bir mutex kullanmak için olabilir.

Bir derleyici hem tek iş parçacıklı ve çok kanallı uygulamaları derlemek destekliyorsa, tek iş parçacıklı uygulamalar için varsayılan eşitleme filtresi olan sync_none; tüm diğer durumlarda olduğu sync_shared.

Önbellek şablonu cache_freelist ücretsiz listesinde depolanan öğeleri en fazla sayısını belirleyen en büyük sınıf baðýmsýz deðiþken alýr.

<allocators> Aşağıdaki max sınıfları sağlar:

Ee292134.collapse_all(tr-tr,VS.110).gifMakrolar

ALLOCATOR_DECL (<allocators>)

Bir ayırıcı şablonu sınıfı ortaya çıkarır.

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

Eşitleme Filtresi üretir.

Ee292134.collapse_all(tr-tr,VS.110).gifİşleçler

operator!= (<allocators>)

Belirtilen sınıf ayırıcısı nesneler arasındaki eşitsizlik sınar.

operator== (<allocators>)

Belirtilen sınıfın ayırıcısı nesneleri arasında eşitlik testleri.

Ee292134.collapse_all(tr-tr,VS.110).gifSınıflar

allocator_base

Temel sınıf ve kullanıcı tanımlı bir ayırıcı eşitleme filtresi oluşturmak için gereken ortak işlevleri tanımlar.

allocator_chunklist

Ayrılan depolama alanı ve önbellek türü kullanarak nesneleri için boşaltma yöneten bir nesneyi tanımlayan cache_chunklist.

allocator_fixed_size

Ayrılan depolama alanı ve nesne türü için boşaltma yöneten bir nesneyi tanımlayan Type türünde bir önbellek kullanarak cache_freelist tarafından yönetilen bir uzunluğu ile max_fixed_size.

allocator_newdel

Kullanan bir ayırıcı uygulayan operator delete bir bellek ayırması için blok ve operator new bir bellek bloğu ayrılamıyor.

allocator_suballoc

Ayrılan depolama alanı ve nesne türü için boşaltma yöneten bir nesneyi tanımlayan Type türünde bir önbellek kullanarak cache_suballoc.

allocator_unbounded

Ayrılan depolama alanı ve nesne türü için boşaltma yöneten bir nesneyi tanımlayan Type türünde bir önbellek kullanarak cache_freelist tarafından yönetilen bir uzunluğu ile max_unbounded.

allocator_variable_size

Ayrılan depolama alanı ve nesne türü için boşaltma yöneten bir nesneyi tanımlayan Type türünde bir önbellek kullanarak cache_freelist tarafından yönetilen bir uzunluğu ile max_variable_size.

cache_chunklist

Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar.

cache_freelist

Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar.

cache_suballoc

Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar.

FreeList

Bellek blokları listesini yönetir.

max_fixed_size

Sınırlayan max sınıf nesnesi tanımlar bir freelist nesne için sabit bir maksimum uzunluğu.

max_none

Sınırlayan max sınıf nesnesi tanımlar bir freelist nesne için en fazla uzunluğu sıfır.

max_unbounded

En fazla uzunluğunu sınırlamak değil bir max sınıf nesnesi tanımlar bir freelist nesnesi.

max_variable_size

Sınırlayan max sınıf nesnesi tanımlar bir freelist nesne sayısı için kabaca orantılı bir maksimum uzunluğu için ayrılan bellek blokları.

rts_alloc

Rts_alloc şablon sınıfını tanımlayan bir filtre , tutan bir dizi önbellek örnekler ve ayırma ve derleme zamanında ayırmayı kaldırma zamanında yerine kullanılmak üzere hangi örneği belirler.

sync_none

Eşitleme sağlayan eşitleme filtresi açıklar.

sync_per_container

Ayırıcı her nesne için ayrı cache nesnesi sağlayan eşitleme filtresi açıklar.

sync_per_thread

Her iş parçacığı için ayrı cache nesnesi sağlayan eşitleme filtresi açıklar.

sync_shared

Tüm ayırıcılarına tarafından paylaşılan bir önbellek nesnesi erişimi denetlemek için kullandığı bir mutex eşitleme filtresi açıklar.

Gereksinimler

Başlık: <allocators>

Namespace: stdext

Ayrıca bkz.

Diğer Kaynaklar

Üstbilgi dosyaları