4#include "../Common/PrimitiveDefinitions.h"
5#include "../Memory/Memory.h"
8struct SC_MEMORY_EXPORT VirtualMemory;
9struct SC_MEMORY_EXPORT VirtualAllocator;
41 [[nodiscard]]
bool reserve(
size_t maxCapacityInBytes);
49 [[nodiscard]]
bool commit(
size_t sizeInBytes);
52 [[nodiscard]]
bool decommit(
size_t sizeInBytes);
55 [[nodiscard]]
size_t size()
const {
return committedBytes; }
58 [[nodiscard]]
size_t capacity()
const {
return reservedBytes; }
61 [[nodiscard]]
void*
data() {
return memory; }
64 [[nodiscard]]
const void*
data()
const {
return memory; }
67 size_t reservedBytes = 0;
68 size_t committedBytes = 0;
70 void* memory =
nullptr;
81 virtual void*
allocateImpl(
const void* owner,
size_t numBytes,
size_t alignment)
override;
84 void syncFixedAllocator();
A MemoryAllocator implementation using a finite slice of memory.
Definition Memory.h:146
A MemoryAllocator implementation based on a growable slice of VirtualMemory.
Definition VirtualMemory.h:75
virtual void * allocateImpl(const void *owner, size_t numBytes, size_t alignment) override
Allocate virtual function to be reimplemented.
virtual void * reallocateImpl(void *memory, size_t numBytes) override
Re-allocate virtual function to be reimplemented.
Reserves a contiguous slice of virtual memory committing just a portion of it.
Definition VirtualMemory.h:24
size_t size() const
Returns how many bytes are currently committed / accessible.
Definition VirtualMemory.h:55
static size_t roundUpToPageSize(size_t size)
Round up the passed in size to system memory page size.
void * data()
Returns a pointer to the start of the reserved virtual memory.
Definition VirtualMemory.h:61
size_t capacity() const
Returns how many bytes are currently reserved.
Definition VirtualMemory.h:58
const void * data() const
Returns a pointer to the start of the reserved virtual memory.
Definition VirtualMemory.h:64
bool reserve(size_t maxCapacityInBytes)
Reserves a large block of virtual memory of size maxCapacityInBytes.
bool commit(size_t sizeInBytes)
Ensures at least sizeInBytes to be committed / accessible from the large maxCapacityInBytes block.
void release()
Reclaims the entire virtual memory block (reserved with VirtualMemory::reserve)
bool decommit(size_t sizeInBytes)
Reclaims all unused pages past sizeInBytes (previously committed with VirtualMemory::commit)
static size_t getPageSize()
Obtains system memory page size.