Fördelare

En  allokator eller minnesallokator i programmeringsspråket C++ är  en specialiserad klass som implementerar och kapslar in obetydliga (ur en tillämpad synvinkel) detaljer för att allokera och frigöra datorminnesresurser.

Beskrivning

Alla klasser i STL Standard Template Library hanterar minne med hjälp av inbyggda allokatorer. Att explicit specificera en allokator är inte ett krav för biblioteksbehållareklasser, men de kan skickas till konstruktörer som mallparametrar [1] . Anledningen till införandet av allokeringsmekanismen i STL -biblioteket var behovet av att abstrahera från begränsningarna i datorminnesmodellen vid design av mallar [2] .

Utöver detta ger många standardbiblioteksklasser möjligheten att inkludera anpassade allokeringsimplementeringar istället för system. Det noteras att standardallokatorer ofta är baserade på användningen av icke-formaliserade språkfinesser och därför orsakar de de flesta problem när det gäller att säkerställa plattformsoberoende kodportabilitet [3] .

Syntax

Typen av allokeringsvärde bestämmer typen av objekt för vilket minne är allokerat. Om den givna typen är T, kan du anropa en medlemsfunktion allocate(n)generera en begäran om att allokera utrymme i maskinminnet för att lagra nobjekt av typen T[4] .

När de väl har deklarerats och tilldelats skiljer sig inte objekt med en icke-standardallokator från andra objekt, men att blanda dem med varandra avråds starkt på grund av oförutsägbara konsekvenser. För att identifiera objekt med olika typer av minnesallokering kan du använda standardtilldelningsfunktionerna get_allocator()i kombination med jämförelseoperationen ==[5] .

Anteckningar

  1. Ostern, 2004 , Allocators, sid. 96.
  2. G. Andreas, F. Masur Allocators (STL) www.codeguru.com, 2004
  3. Ostern, 2004 , Allocator, sid. 176-177.
  4. Ostern, 2004 , Allocator, sid. 178.
  5. Josyutis, 2004 , Använda allokatorer i applikationsprogrammering, p. 701-702.

Källor