是否有标准的内存资源分配器适配器/包装器



我很惊讶没有看到标准或其他任何人(?(提供适配器/包装器,使标准分配器看起来像std::memory_resource。我是不是错过了什么?它只是类似的东西吗

template <typename ByteAllocator>
class AllocatorMemoryResource : public std::memory_resource {
ByteAllocator m_allocator;
void* do_allocate(std::size_t bytes, std::size_t alignment) override {
// Do something to align the storage???
return static_cast<void*>(m_allocator.allocate(bytes));
}
void do_deallocate(void* p, std::size_t bytes, std::size_t alignment) override {
m_allocator.deallocate(p, bytes);
}
bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override {
return this == &other; // Right?
}
};

像这样的包装器是在std或Boost或其他地方提供的吗?我找不到它。我正在使用tbb::scalable_allocator,希望能够将它与std::pmr::vector<T>一起使用。

目前,我相信它仍然是实验性的:https://en.cppreference.com/w/cpp/experimental/resource_adaptor.

从最简单的意义上讲,您的实现似乎是正确的。你可以通过进行动态铸造并返回的结果来使它更高级

this->m_allocator == cast_other->m_allocator

相关内容

  • 没有找到相关文章