<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:
Makrolar
Bir ayırıcı şablonu sınıfı ortaya çıkarır. |
|
Yields stdext::allocators::cache_chunklist<sizeof(Type)>. |
|
Yields stdext::allocators::cache_freelist<sizeof(Type), max>. |
|
Yields stdext::allocators::cache_suballoc<sizeof(Type)>. |
|
Eşitleme Filtresi üretir. |
İşleçler
Belirtilen sınıf ayırıcısı nesneler arasındaki eşitsizlik sınar. |
|
Belirtilen sınıfın ayırıcısı nesneleri arasında eşitlik testleri. |
Sınıflar
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. |
|
Ayrılan depolama alanı ve önbellek türü kullanarak nesneleri için boşaltma yöneten bir nesneyi tanımlayan cache_chunklist. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar. |
|
Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar. |
|
Ayırır ve bellek blokları tek boyutta seçeneklerindeki bir blok ayırıcı tanımlar. |
|
Bellek blokları listesini yönetir. |
|
Sınırlayan max sınıf nesnesi tanımlar bir freelist nesne için sabit bir maksimum uzunluğu. |
|
Sınırlayan max sınıf nesnesi tanımlar bir freelist nesne için en fazla uzunluğu sıfır. |
|
En fazla uzunluğunu sınırlamak değil bir max sınıf nesnesi tanımlar bir freelist nesnesi. |
|
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 ş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. |
|
Eşitleme sağlayan eşitleme filtresi açıklar. |
|
Ayırıcı her nesne için ayrı cache nesnesi sağlayan eşitleme filtresi açıklar. |
|
Her iş parçacığı için ayrı cache nesnesi sağlayan eşitleme filtresi açıklar. |
|
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