16得票1回答
标准库设施中分配但不使用分配器的内容

在C++标准库分配内存的大多数地方,用户都可以通过提供一个符合Allocator要求的类来自定义内存分配。例如,几乎所有容器都需要一个allocator模板参数,并且std::allocate_shared返回一个shared_ptr,其包含的元素和控制块都是通过提供的Allocator分配的...

16得票4回答
为什么在C++23中要使用allocate_at_least()?

根据cppref: std::allocator<T>::allocate_at_least 通过调用::operator new(还可以提供一个额外的std::align_val_t参数),分配至少n个未初始化的存储空间,每个存储空间的大小为count * sizeof(T)...

16得票2回答
C++0x中allocator_traits<T>的目的是什么?

为什么C++0x没有使用查询分配器成员类型的标准C++03接口?在哪些情况下成员类型不足以满足要求?

14得票2回答
为什么在分配器中允许`propagate_on_container_swap == false`,即使它可能导致未定义的行为?

注意: 最初由Matt Mcnabb在为什么在C++11中交换标准库容器(涉及分配器)可能会有问题?的评论中提出。 标准(N3797)规定,如果分配器内的progagate_on_container_swap为std::false_type,并且涉及的两个分配器不相等,则会产生未定义行为...

14得票1回答
C++分配器和内存池的所有权

我有一些困惑。假设我有一个任意的C++分配器 - 就像这样:template&lt;class T&gt; struct my_allocator { template&lt;class Other&gt; struct rebind { typedef my_allocato...

14得票2回答
STL容器:构造函数的分配器参数和作用域分配器

STL容器有一个模板参数,可以选择自定义分配器。花了一些时间,但我认为我理解了其工作原理。不过这样做并不是很好,因为给定的分配器类型并没有直接使用,而是重新绑定到另一种类型的分配器上。最终我可以使用它。 在阅读API后,我发现还可以将分配器作为构造函数参数传递。但是,如果容器内部重新绑定了来...

14得票4回答
作为智能指针向量的替代方案,自定义分配器是否可行?

这个问题涉及到拥有指针,使用指针,智能指针,向量和分配器。 我在代码架构方面有点迷惑。此外,如果这个问题已经有了答案,请原谅,但我到目前为止还没有找到令人满意的答案,请指点我。 我的问题是: 我在一个向量中存储了几个“东西”,同时有几个“消费者”需要这些“东西”。因此,我的第一次尝试如下...

13得票1回答
C++11是否要求分配器必须是默认可构造的,libstdc++和libc++存在分歧?

使用稍加修改的Howard Hinnant 的 C++11 栈分配器,文档在此和这里,加上 std::basic_string 并使用编译器 gcc 和 libstdc++,以下代码示例(在线演示):const unsigned int N = 200; arena&lt;N&gt; a; ...

13得票2回答
为什么C++中的分配器(allocator)提供了void类型的特化?

我注意到C++中的分配器为void类型提供了特化。这样做有什么特殊目的吗?分配void类型的内存好像没有意义,对吧?

13得票1回答
std::list如何分配节点和元素

std::list 如何分配用于保存 next/prev 指针和包含的 T 元素的节点? 我认为标准分配器只能用于为一种类型分配内存(因为 std::allocator::allocate 按照 sizeof(T) 的增量分配内存)。因此,似乎不可能在单个分配中分配列表节点和包含的对象,这...