35得票1回答
在std::vector中使用自定义分配器

是否可以为std::vector的内部分配使用自定义分配器?如果可以,要怎么做?

35得票2回答
C++ STL分配器与new操作符的比较

根据C++ Primer第四版第755页的注释: 现代C++程序通常应该使用allocator类来分配内存。这样更安全,更灵活。 我不太理解这个说法。到目前为止,我阅读的所有材料都教授使用new在C++中分配内存。书中展示了vector类如何利用allocator的示例。但是,我想不出其他...

35得票1回答
Hinnant的堆栈分配器相关问题

我一直在使用Howard Hinnant的堆栈分配器,它非常好用,但是其中的一些实现细节对我来说有点不清楚。 为什么要使用全局操作符new和delete?allocate()和deallocate()成员函数分别使用::operator new和::operator delete。类似地,...

34得票4回答
为什么我们有模板模板参数时还需要allocator::rebind?

每个分配器类必须具有类似以下接口的接口: template<class T> class allocator { ... template<class Other> struct rebind { typedef allocator<Ot...

33得票1回答
新的C++代码应该使用内存资源而不是分配器吗?

C++17将为我们带来std::pmr::memory_resource,这是一个用于分配和释放内存的干净接口。与Allocator概念不同的是,它只做这一件事情,没有其他功能。还会有std::pmr::polymorphic_allocator,它将内存资源包装成经典分配器,以便与现有容器一...

31得票1回答
`memory_resource` 的目的和用途是什么?

标准的C++17新增了一个名为pmr的命名空间,其中包含一组以memory_resource名称分组的类。在互联网上搜索后,我发现关于它的通俗易懂的信息很少,这就是这个问题产生的直接原因: pmr及特别是pmr::memory_resource的主要思想是什么? 更具体地说,我心中有一些疑...

29得票3回答
为什么Allocator::reference正在逐步淘汰?

我看了一下std::vector的规范,注意到C++03中reference typedef从Allocator::reference改变为C++11中的value_type&。我感到很惊讶,于是我开始深入研究。 在C++03 §20.1.5 [lib.allocator.requi...

27得票1回答
传播容器移动赋值的示例用法

我试图理解如何正确编写 AllocatorAware 容器。 我的理解是,propagate_on_container_move_assignment typedef 指示是否需要在容器自身被 move-assigned 时复制某个 Allocator 类型。 因此,由于我找不到任何示例,...

26得票3回答
使用 boost shared_ptr 的自定义(池)分配器

我希望对象由shared_ptr管理,且从池中分配,比如Boost的Pool接口,如何实现?

23得票3回答
从std::vector接管内存

我使用一个操作大量数据的外部库。该数据通过原始指针和长度传入。该库不声明指针的所有权,但在完成数据操作时调用提供的回调函数(带有相同的两个参数)。 使用std::vector<T>可以方便地准备数据,而我不想放弃这种便利性。完全不可能复制数据。因此,我需要一种方法来“接管”由st...