Der Allokator ist ein wichtiger Teil der C++-Standardbibliothek. Seine Funktion besteht darin, die Speicherzuweisungs- und Freigabeanforderungen des Containers zu verarbeiten. Mit anderen Worten: Der Allokator wird verwendet, um die Details der Speicherverwaltung von STL-Containern auf niedriger Ebene zu kapseln.
Die Rolle des Allokators
In der C++-Programmierung ist der Allokator (englisch: allocator) die C++-Standardbibliothek wichtiger Bestandteil.
Die C++-Bibliothek definiert eine Vielzahl von Datenstrukturen (wie verknüpfte Listen, Mengen usw.), die zusammen als „Container“ bezeichnet werden. Eines der gemeinsamen Merkmale dieser Container ist, dass ihre Größe während des Programms geändert werden kann läuft; Um dies zu erreichen, ist insbesondere eine dynamische Speicherzuweisung erforderlich, bei der der Allokator zur Verarbeitung der Speicherzuweisungs- und Freigabeanforderungen des Containers verwendet wird.
Mit anderen Worten, der Allokator wird verwendet, um die Low-Level-Details der Speicherverwaltung von STL-Containern zu kapseln.
Standardmäßig verwendet die C++-Standardbibliothek einen eigenen universellen Allokator, aber basierend auf spezifischen Anforderungen können Programmierer auch ihren eigenen Allokator anpassen, um ihn zu ersetzen.
Der Allokator wurde erstmals von Alexander Stepanov als Teil der C++ Standard Template Library (STL) erfunden. Seine ursprüngliche Absicht bestand darin, eine Methode zu schaffen, die die Bibliothek basierend auf dem zugrunde liegenden Datenmodell „flexibler und unabhängiger macht“. " und ermöglicht es Programmierern, benutzerdefinierte Zeiger und Referenztypen in der Bibliothek zu verwenden;
Aber als die Standard Template Library in den C++-Standard integriert wurde, erkannte das C++ Standards Committee, dass das Datenmodell völlig ein Kompromiss war Die Zuteilungsbeschränkungen im Standard sind strenger geworden, was zu inakzeptablen Leistungseinbußen aufgrund der Abstraktion führt. Aus diesem Grund stellt der bestehende Standard deutlich weniger Anforderungen als Stepanov ursprünglich vorgesehen hatte. Die beschriebenen Spender sind in ihrer Anpassbarkeit erheblich eingeschränkt.
Obwohl die Anpassung von Allokatoren begrenzt ist, sind in vielen Fällen immer noch benutzerdefinierte Allokatoren erforderlich, und zwar normalerweise, um verschiedene Arten von Speicherbereichen (z. B. gemeinsam genutzten Speicher und zurückgeforderten Speicher) zu kapseln um die Leistung zu verbessern, wenn ein Speicherpool für die Speicherzuweisung verwendet wird. Darüber hinaus profitieren Programme, die häufig kleine Mengen Speicher zuweisen, aus Sicht der Speichernutzung und Laufzeit erheblich von der Einführung eines speziell angepassten Allokators.
Empfohlenes Tutorial: „C++-Video-Tutorial“
Das obige ist der detaillierte Inhalt vonBeschreiben Sie kurz, welche Funktion der Allokator hat.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!