Alocator

Un  alocator sau alocător de memorie în limbajul de programare C++ este  o clasă specializată care implementează și încapsulează detalii nesemnificative (din punct de vedere aplicat) de alocare și eliberare a resurselor de memorie ale computerului.

Descriere

Toate clasele din Biblioteca de șabloane standard STL gestionează memoria folosind alocătorii încorporați. Specificarea explicită a unui alocător nu este o cerință pentru clasele de containere de bibliotecă, dar acestea pot fi transmise constructorilor ca parametri șablon [1] . Motivul pentru introducerea mecanismului de alocare în biblioteca STL a fost nevoia de a face abstracție de la limitările modelului de memorie de calculator atunci când se proiectează șabloane [2] .

În plus, multe clase de bibliotecă standard oferă posibilitatea de a include implementări personalizate de alocare în locul celor de sistem. Se remarcă faptul că alocatorii standard se bazează adesea pe utilizarea subtilităților de limbaj neformalizate și, prin urmare, provoacă cele mai multe probleme în asigurarea portabilității codului pe mai multe platforme [3] .

Sintaxă

Tipul valorii alocatorului determină tipul obiectului pentru care este alocată memorie. Dacă tipul dat este T, atunci apelarea unei funcții membru allocate(n)vă permite să generați o cerere de alocare a spațiului în memoria mașinii pentru stocarea nobiectelor de tip T[4] .

Odată declarate și alocate, obiectele cu un alocator non-standard nu sunt diferite de alte obiecte, dar amestecarea lor între ele este puternic descurajată din cauza consecințelor imprevizibile. Pentru a identifica obiecte cu diferite tipuri de alocare de memorie, puteți utiliza funcțiile standard de acces al alocătorului get_allocator()în combinație cu operația de comparare ==[5] .

Note

  1. Ostern, 2004 , Alocatori, p. 96.
  2. G. Andreas, F. Masur Allocators (STL) www.codeguru.com, 2004
  3. Ostern, 2004 , Allocator, p. 176-177.
  4. Ostern, 2004 , Allocator, p. 178.
  5. Josyutis, 2004 , Utilizarea alocătorilor în programarea aplicațiilor, p. 701-702.

Surse