← API Reference Class

asge::mem::ArenaAllocator

Owning arena allocator built on top of LinearAllocator.

#include <LinearAllocator.hpp>

Inherits from asge::mem::LinearAllocator.

Inheritance

classDiagram
    class N1["asge::mem::ArenaAllocator"]
    class N2["asge::mem::LinearAllocator"]
    N2 <|-- N1
    click N1 href "classasge_1_1mem_1_1ArenaAllocator.html"
    click N2 href "classasge_1_1mem_1_1LinearAllocator.html"

Collaboration

classDiagram
    class N1["asge::mem::ArenaAllocator"]
    class N2["asge::mem::LinearAllocator"]
    N2 <|-- N1
    click N1 href "classasge_1_1mem_1_1ArenaAllocator.html"
    click N2 href "classasge_1_1mem_1_1LinearAllocator.html"

Internally allocates a heap buffer of the requested size and passes it to the parent LinearAllocator. Unlike LinearAllocator, ArenaAllocator owns its storage and releases it automatically on destruction. All LinearAllocator operations (Alloc, AllocOne, AllocArray, GetMarker, Rewind, Reset) are available through inheritance.

Private Attributes

#std::unique_ptr< std::byte[]> m_Storageprivate

Public Member Functions

#ArenaAllocator(size_type inSize)
#ArenaAllocator(ArenaAllocator const &)=delete
#ArenaAllocator & operator=(ArenaAllocator const &)=delete
#ArenaAllocator(ArenaAllocator &&)=default
#ArenaAllocator & operator=(ArenaAllocator &&)=default
#~ArenaAllocator()=default

Public Types

#using size_type = std::size_t
#using marker_type = Marker
#using pointer_type = std::byte *