Ich habe einen Pool-Allokator, den ich als Übung geschrieben habe, der die C++ 11 std :: allocator-Anforderungen erfüllt und funktioniert, die funktioniert, aber die von mir verwendete Richtlinie als Referenz (am folgenden Papierträger):Anpassung eines Chunk-Pool-Allokators fester Größe an bestimmte STL-Container
https://pdfs.semanticscholar.org/4321/a91d635d023ab25a743c698be219edcdb1a3.pdf
ist nur dann wirklich gut, ein einzelnes Objekt in einen Speicherblock mit einem ausreichenden Größe für sie zu einem Zeitpunkt für die Zuteilung.
Ich stelle fest, dass die std :: allocator Template-Methode "allocate" einen Parameter hat, wo STL-Container eine Anzahl von Blöcken anfordern können, die gleichzeitig zugeordnet werden. Zum Beispiel sieht es wie std :: basic_string aus, sobald es eine bestimmte Stringgröße überschreitet, die es auf dem Stack behält, verschiebt es das Ganze sofort auf den Heap, indem es einen zusammenhängenden Speicherblock von dem Allokator anfordert, der groß genug ist, um ein char-Array zu speichern Halten Sie die gesamte Zeichenfolge. Die dynamische Expansion von std :: vector scheint ähnlich zu funktionieren.
Gibt es eine Möglichkeit, einen Zuordner anzupassen, der für die Rückgabe von Stücken mit fester Größe die Größe des Typs, für den er auf diesem STL-Containertyp erstellt wurde, verwendet?
Ein Standardzuordner muss in der Lage sein, zusammenhängenden Speicher für eine bestimmte Anzahl von Elementen des Typs zuzuordnen, auf dem er basiert. –
Sie können das (optionale) Member 'size_type max_size()' angeben und bei Verletzung werfen – Caleth