C++-ohjelmointikielessä allokaattori tai muistivaraaja on erikoisluokka , joka toteuttaa ja kapseloi merkityksettömiä (sovelluksen kannalta katsottuna) tietokoneen muistiresurssien varaamisen ja vapauttamisen yksityiskohtia.
Kaikki STL Standard Template Libraryn luokat hallitsevat muistia sisäänrakennettujen allokaattoreiden avulla. Allokaattorin nimenomainen määrittäminen ei ole vaatimus kirjaston säiliöluokille, mutta ne voidaan välittää rakentajille malliparametreina [1] . Syy allokaattorimekanismin käyttöönotolle STL -kirjastoon oli tarve irrottautua tietokoneen muistimallin rajoituksista malleja suunniteltaessa [2] .
Tämän lisäksi monet vakiokirjastoluokat tarjoavat mahdollisuuden sisällyttää mukautettuja allokaattoritoteutuksia järjestelmän sijasta. On huomattava, että standardiallokaattorit perustuvat usein ei-formalisoitujen kielten hienouksiin ja siksi ne aiheuttavat eniten ongelmia alustojen välisen koodin siirrettävyyden varmistamisessa [3] .
Varaajan arvon tyyppi määrittää objektin tyypin, jolle muistia on varattu. Jos annettu tyyppi on T, jäsenfunktion kutsuminen allocate(n)mahdollistaa pyynnön varata tilaa koneen muistissa tyypin [4]n kohteiden tallentamiseksi . T
Kun kohteet on ilmoitettu ja allokoitu, ne, joissa on epästandardi allokaattori, eivät eroa muista objekteista, mutta niiden sekoittamista keskenään ei suositella arvaamattomien seurausten vuoksi. Tunnistaaksesi kohteet, joilla on erityyppinen muistin varaus, voit käyttää vakiovaraustoimintoja get_allocator()yhdessä vertailutoiminnon kanssa ==[5] .