首页 > 解决方案 > 是否有使用自定义 *alloc/*free 函数对的 std::allocator_traits 示例实现?

问题描述

我的目标是利用特定的分配/释放函数对(即 Win32 中的 LocalAlloc/LocalFree)创建一个 std::allocator 类型。有人建议我对 std::allocator 模板类进行子类化,但它只是包装了 std::allocator_traits。我想继承 std::allocator_traits 因为它是较小的类型,并且 std::allocator 包装了它。

我找到了std::allocator_traits/cppreference,但现在还没有它的示例实现。

标签: c++

解决方案


您没有“子类化” allocator_traits(或任何 C++“特征”)类型。如果您需要覆盖默认特征行为,则创建特征类型的特化由于allocator_traits将分配器作为模板参数与它一起使用,这意味着您将创建一个分配器类型。

或者简单地说,创建分配器类型不是可选的。它不必(并且可能不应该)派生自std::allocator,但您必须创建一个分配器类型才能创建自己的分配器。


推荐阅读