我有自己的堆栈分配器,该堆栈分配器可以与除std::vector::shrink_to_fit()
以外的测试用例一起使用
shrink_to_fit()
尝试使用不同于原来分配内存的状态分配器来分配内存。
我的理解是,在从一个分配器分配的内存通过另一分配器释放之前,容器必须检查分配器是否相等。我错了吗?
引用来自:https://en.cppreference.com/w/cpp/named_req/Allocator
a1 == a2
仅在分配器a1分配的存储可以是 通过a2释放。建立反身,对称和 传递关系。不抛出异常。
在我的示例中,甚至没有调用相等性检查运算符。
我正在使用g ++ 5.4.0。完整的代码示例可以在这里找到: https://onlinegdb.com/ryG9W5sx4
答案 0 :(得分:4)
分配器的副本必须比较相等。你没有。
(因此,即使有状态分配器也不能具有嵌入式存储。)