Il distributore è una parte importante della libreria standard C ++ nella programmazione C ++

- Jun 25, 2018-

Nella programmazione C ++, l'allocatore è una parte importante della libreria standard C ++. La libreria C ++ definisce una varietà di strutture di dati (come liste collegate, raccolte, ecc.) Che sono collettivamente denominate "contenitori". Una delle caratteristiche comuni di questi contenitori è che le loro dimensioni possono essere modificate in fase di esecuzione; per ottenere ciò, l'allocazione dinamica della memoria è particolarmente necessaria, in questo dispenser viene utilizzato per gestire l'allocazione della memoria del contenitore e le richieste di rilascio. In altre parole, l'allocatore viene utilizzato per incapsulare i dettagli di basso livello della gestione della memoria nei contenitori STL. Per impostazione predefinita, la libreria standard C ++ utilizza il proprio allocatore universale, ma i programmatori possono anche personalizzare il distributore per sostituirlo, a seconda delle esigenze.

Il distributore è stato inventato per la prima volta da Alexander Stepnenov come parte della Standard Template Library (STL) per il C ++. La sua intenzione originale era quella di creare un metodo che "rendesse la libreria più flessibile e indipendente dal modello di dati sottostante e consenta ai programmatori di sfruttare i puntatori e i tipi di riferimento personalizzati nella libreria, ma incorporando la libreria di template standard nello standard C ++ , il comitato per gli standard C ++ si è reso conto che l'astrazione completa del modello di dati avrebbe comportato una perdita di prestazioni inaccettabile, al fine di raggiungere un compromesso, le restrizioni sui distributori nello standard sono diventate più rigorose e, in considerazione di ciò, il grado di personalizzazione dei dispensatori descritti dagli standard esistenti è stato molto limitato rispetto all'idea originale di Stefanov.

Sebbene la personalizzazione del distributore sia limitata, in molti casi è ancora necessario un allocatore personalizzato, che generalmente consente di incapsulare l'accesso a diversi tipi di spazio di memoria (ad esempio memoria condivisa e memoria riciclata) o Migliora le prestazioni quando si utilizzano pool di memoria per allocazione della memoria. Oltre a ciò, dal punto di vista dell'utilizzo della memoria e del runtime, è anche utile introdurre un distributore appositamente progettato per i programmi che eseguono frequentemente una piccola quantità di allocazione di memoria.