Files
XCEngine/engine/include/XCEngine/Memory/MemoryManager.h
ssdfasd 34c75e7129 feat: 实现Containers、Memory、Threading核心模块及单元测试
- Containers: String, Array, HashMap 容器实现及测试
- Memory: Allocator, LinearAllocator, PoolAllocator, ProxyAllocator, MemoryManager 实现及测试
- Threading: Mutex, SpinLock, ReadWriteLock, Thread, Task, TaskSystem 实现及测试
- 修复Windows平台兼容性: _aligned_malloc, std::hash特化
- 修复构建错误和测试用例问题
2026-03-13 20:37:08 +08:00

47 lines
1.1 KiB
C++

#pragma once
#include <memory>
#include "LinearAllocator.h"
#include "PoolAllocator.h"
#include "ProxyAllocator.h"
namespace XCEngine {
namespace Memory {
class IAllocator;
class LinearAllocator;
class PoolAllocator;
class ProxyAllocator;
class MemoryManager {
public:
static MemoryManager& Get();
void Initialize();
void Shutdown();
IAllocator* GetSystemAllocator();
std::unique_ptr<LinearAllocator> CreateLinearAllocator(size_t size);
std::unique_ptr<PoolAllocator> CreatePoolAllocator(size_t blockSize, size_t count);
std::unique_ptr<ProxyAllocator> CreateProxyAllocator(const char* name);
void SetTrackAllocations(bool track);
void DumpMemoryLeaks();
void GenerateMemoryReport();
private:
MemoryManager() = default;
~MemoryManager() = default;
IAllocator* m_systemAllocator = nullptr;
bool m_initialized = false;
bool m_trackAllocations = true;
};
#define XE_ALLOC(allocator, size, ...) allocator->Allocate(size, ##__VA_ARGS__)
#define XE_FREE(allocator, ptr) allocator->Free(ptr)
} // namespace Memory
} // namespace XCEngine