Program Listing for File HeapManager.h#
↰ Return to documentation for file (HeapManager.h)
#pragma once
#include <cstdint>
class FixedSizeAllocator;
struct FSAData;
class HeapManager
{
public:
static HeapManager* Get();
static HeapManager* Create(void* i_pMemory, size_t i_bytes, unsigned int i_numDescriptors, FSAData* i_FSAData = nullptr, size_t i_numFSAs = 0);
void Destroy();
void* Alloc(size_t i_size);
void* Alloc(size_t i_size, size_t i_align);
void Free(void* i_pMemory);
void Collect();
bool Contains(void* i_pMemory) const;
void ShowFreeBlocks() const;
void ShowOutstandingAllocations() const;
private:
static uintptr_t sBaseAddressOfHeapManager;
HeapManager* Initialize(void* i_pMemory, size_t i_bytes, unsigned int i_numDescriptors, const FSAData* i_FSAData, const size_t i_numFSAs);
FixedSizeAllocator* FindFixedSizeAllocator(size_t i_size);
static bool IsAddressWithinAvailableMemoryRange(void* i_pMemory, size_t i_bytes, void* i_AddressToCheck);
uintptr_t pRoot = 0;
size_t totalSizeOfHeapManager = 0;
uintptr_t pLinkedListAllocatorBaseAddress = 0;
size_t sizeOfFixedSizeAllocatorAddressArray = 0;
uintptr_t* pFixedSizeAllocatorBaseAddressArray = nullptr;
};