Alokátor

Alokátor nebo alokátor paměti v programovacím  jazyce C++ je  specializovaná třída, která implementuje a zapouzdřuje nepodstatné (z aplikovaného hlediska) detaily přidělování a uvolňování paměťových zdrojů počítače.

Popis

Všechny třídy v knihovně standardních šablon STL spravují paměť pomocí vestavěných alokátorů. Explicitní určení alokátoru není pro třídy kontejnerů knihoven požadavkem, ale lze je předat konstruktorům jako parametry šablony [1] . Důvodem zavedení mechanismu alokátoru do knihovny STL byla potřeba abstrahovat od omezení modelu paměti počítače při návrhu šablon [2] .

Kromě toho mnoho standardních tříd knihoven poskytuje možnost zahrnout vlastní implementace alokátorů namísto systémových. Je třeba poznamenat, že standardní alokátory jsou často založeny na použití neformalizovaných jazykových jemností, a proto způsobují největší problémy při zajišťování přenositelnosti kódu mezi platformami [3] .

Syntaxe

Typ hodnoty alokátoru určuje typ objektu, pro který je alokována paměť. Pokud je daný typ T, pak volání členské funkce allocate(n)umožňuje vygenerovat požadavek na přidělení místa v paměti stroje pro uložení nobjektů typu T[4] .

Jakmile jsou objekty s nestandardním alokátorem deklarovány a přiděleny, neliší se od ostatních objektů, ale jejich vzájemné míchání se důrazně nedoporučuje kvůli nepředvídatelným následkům. K identifikaci objektů s různými typy alokace paměti můžete použít standardní přístupové funkce alokátoru get_allocator()v kombinaci s operací porovnání ==[5] .

Poznámky

  1. Ostern, 2004 , Alokátoři, str. 96.
  2. G. Andreas, F. Masur Allocators (STL) www.codeguru.com, 2004
  3. Ostern, 2004 , Alokátor, str. 176-177.
  4. Ostern, 2004 , Alokátor, str. 178.
  5. Josyutis, 2004 , Použití alokátorů v programování aplikací, s. 701-702.

Zdroje