En allokator eller memory allocator i C++ programmeringssproget er en specialiseret klasse, der implementerer og indkapsler ubetydelige (fra et anvendt synspunkt) detaljer om tildeling og frigørelse af computerhukommelsesressourcer.
Alle klasser i STL Standard Template Library administrerer hukommelse ved hjælp af indbyggede allokatorer. Eksplicit angivelse af en allokator er ikke et krav for bibliotekscontainerklasser, men de kan videregives til konstruktører som skabelonparametre [1] . Årsagen til introduktionen af allokeringsmekanismen i STL- biblioteket var behovet for at abstrahere fra begrænsningerne af computerhukommelsesmodellen ved design af skabeloner [2] .
Ud over dette giver mange standardbiblioteksklasser mulighed for at inkludere brugerdefinerede allokeringsimplementeringer i stedet for system. Det bemærkes, at standardallokatorer ofte er baseret på brugen af ikke-formaliserede sproglige finesser, og de forårsager derfor de fleste problemer med at sikre kodeportabilitet på tværs af platforme [ 3] .
Typen af allokeringsværdien bestemmer typen af objektet, som hukommelsen er allokeret til. Hvis den givne type er T, så giver kald af en medlemsfunktion allocate(n)dig mulighed for at generere en anmodning om at allokere plads i maskinens hukommelse til lagring naf objekter af typen T[4] .
Når først de er erklæret og allokeret, er objekter med en ikke-standardallokator ikke anderledes end andre objekter, men at blande dem med hinanden frarådes kraftigt på grund af uforudsigelige konsekvenser. For at identificere objekter med forskellige typer hukommelsesallokering kan du bruge standardallokatoradgangsfunktionerne get_allocator()i kombination med sammenligningsoperationen ==[5] .