Az allokátor vagy memóriafoglaló a C++ programozási nyelvben egy speciális osztály, amely megvalósítja és beágyazza a számítógépes memória erőforrások lefoglalásának és felszabadításának (alkalmazotti szempontból) jelentéktelen részleteit .
Az STL Standard Template Library összes osztálya beépített allokátorokkal kezeli a memóriát. A könyvtári konténerosztályoknál nem követelmény az allokátor kifejezett megadása, de sablonparaméterekként átadhatók a konstruktoroknak [1] . Az allokátor mechanizmus STL könyvtárba való bevezetésének oka az volt, hogy a sablonok tervezésénél elvonatkoztatni kellett a számítógépes memóriamodell korlátaitól [2] .
Ezen túlmenően számos szabványos könyvtárosztály lehetőséget biztosít egyéni lefoglaló megvalósítások beépítésére a rendszer helyett. Meg kell jegyezni, hogy a szabványos allokátorok gyakran nem formalizált nyelvi finomságok használatán alapulnak, ezért ezek okozzák a legtöbb problémát a platformok közötti kódhordozhatóság biztosításában [3] .
Az allokátor értékének típusa határozza meg annak az objektumnak a típusát, amelyhez a memória le van foglalva. Ha az adott típus T, akkor egy tagfüggvény meghívása allocate(n)lehetővé teszi, hogy kérést generáljunk a gép memóriájában a [4]n típusú objektumok tárolására . T
A deklarálást és kiosztást követően a nem szabványos allokátorral rendelkező objektumok semmiben sem különböznek a többi objektumtól, de a megjósolhatatlan következmények miatt erősen nem ajánlott keverni őket. A különböző típusú memóriafoglalással rendelkező objektumok azonosításához használhatja a szabványos allokátor hozzáférési funkciókat get_allocator()az összehasonlító művelettel kombinálva ==[5] .