std::experimental::pmr::monotonic_buffer_resource::do_allocate
| virtual void* do_allocate( std::size_t bytes, std::size_t alignment ); |
(library fundamentals TS) | |
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 zugewiesen.
Andernfalls weist diese Funktion einen neuen Puffer zu, indem sie upstream_resource()->allocate(n, m) aufruft, wobei n nicht kleiner ist als der größere Wert von bytes und der nächste 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 weist dann den Rückgabeblock aus dem neu zugewiesenen Puffer zu.
[bearbeiten] 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).
[bearbeiten] Ausnahmen
Wirft nichts, es sei denn, der Aufruf von allocate() auf der vorgelagerten Speicherressource wirft etwas.
[bearbeiten] Siehe auch
| alloziert Speicher (öffentliche Memberfunktion von std::experimental::pmr::memory_resource) | |
| [virtuell] |
alloziert Speicher (virtuelle geschützte Memberfunktion von std::experimental::pmr::memory_resource) |