std::pmr::monotonic_buffer_resource::do_allocate
| virtual void* do_allocate( std::size_t bytes, std::size_t alignment ); |
(seit C++17) | |
Allokiert Speicher.
Wenn der *aktuelle Puffer* über ausreichend ungenutzten Speicherplatz verfügt, um einen Block mit der angegebenen Größe und Ausrichtung aufzunehmen, wird der Rückgabeblock aus dem aktuellen Puffer alloziert.
Andernfalls alloziert diese Funktion einen neuen Puffer, indem sie upstream_resource()->allocate(n, m) aufruft, wobei n nicht kleiner ist als der größere Wert von bytes und der *nächsten Puffergröße* und m nicht kleiner ist als alignment. Sie setzt den neuen Puffer als *aktuellen Puffer*, erhöht die *nächste Puffergröße* um einen implementierungsdefinierten Wachstumsfaktor (der nicht notwendigerweise ganzzahlig ist) und alloziert dann den Rückgabeblock aus dem neu allozierten Puffer.
[edit] Rückgabewert
Ein Zeiger auf allokierten Speicher, der mindestens bytes Bytes groß ist, auf die angegebene Ausrichtung alignment ausgerichtet ist, falls eine solche Ausrichtung unterstützt wird, und andernfalls auf alignof(std::max_align_t).
[edit] Ausnahmen
Wirft nichts, es sei denn, der Aufruf von allocate() auf der vorgelagerten Speicherressource wirft etwas.
[edit] Siehe auch
| alloziert Speicher (public member function of std::pmr::memory_resource) | |
| [virtuell] |
alloziert Speicher (virtuelle private Memberfunktion von std::pmr::memory_resource) |