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.
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] .
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] .