123456789101112131415161718192021222324252627 |
- #pragma once
- #include <memory>
- template <class Allocator, class T>
- using TReboundAllocator = typename std::allocator_traits<Allocator>::template rebind_alloc<T>;
- class IAllocator {
- public:
- struct TBlock {
- void* Data;
- size_t Len;
- };
- virtual ~IAllocator() = default;
- virtual TBlock Allocate(size_t len) = 0;
- virtual void Release(const TBlock& block) = 0;
- };
- class TDefaultAllocator: public IAllocator {
- public:
- TBlock Allocate(size_t len) override;
- void Release(const TBlock& block) override;
- static IAllocator* Instance() noexcept;
- };
|