问题标签 [allocator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
84 浏览

c++ - 关联容器 - 异常而不是 C++ 中的默认构造

我正在寻找 C++ 中的关联容器,而不是要求它的元素是默认可构造的,而是会在请求未找到的键的情况下引发异常 - 编辑:在适当的函数中,显然不是全部需要默认构造。这基本上是因为我用一个打电话回家并告诉主对象分配了多少内存,因此需要知道“家”在哪里的分配器替换标准分配器。

0 投票
3 回答
6173 浏览

multithreading - 使用 OpenMP 时的内存泄漏

下面的测试用例在使用 OpenMP 时在“post MT section”消息之后的循环中在 32 位机器上耗尽内存(抛出 std::bad_alloc),但是,如果 OpenMP 的#pragmas 被注释掉,则代码运行通过完成罚款,所以看起来当内存在并行线程中分配时,它没有正确释放,因此我们用完了内存。

问题是下面的内存分配和删除代码是否有问题,或者这是 gcc v4.2.2 或 OpenMP 中的错误?我也尝试了 gcc v4.3 并得到了同样的失败。

0 投票
5 回答
1816 浏览

c++ - std::vector 的第二个参数

看着vector,我意识到我在创建向量时从未使用过第二个参数。

查看上面的链接,它说它是为了:

要使用的分配器对象,而不是构造一个新对象。

或者,至于这个

分配器:用于定义存储分配模型的分配器对象的类型。默认情况下,使用类型 T 的分配器类模板,它定义了最简单的内存分配模型,并且与值无关。

我想这与内存管理有关。但是,我不确定如何使用它。

关于这个的任何指示?

0 投票
1 回答
417 浏览

c++ - 覆盖 new 但告诉 unordered_map 不要使用它

我正在为 C/C++ 编写一个垃圾收集器作为编程练习,其中一部分涉及全局覆盖new. 但是,垃圾收集器也使用 an unordered_map(存储指向已分配块的指针),如果地图尝试使用覆盖的 new (我认为它会尝试无限循环),事情会变得严重混乱。为了创建它,我想使用placement new 来避免调用被覆盖的new:

(mem_t 是我定义的结构,但我认为这不相关。)运行时,此代码在 unordered_map 构造函数中出现段错误。我认为使用placement new 可以解决问题,但显然不是。我很确定 unordered_map 在内部调用 new 。会给它一个分配器(我该怎么做?)解决这个问题?如果不是,这个问题可以解决吗?

0 投票
2 回答
4234 浏览

c++ - What is the purpose of allocator_traits in C++0x?

Why isn't standard C++03 interface for querying member types for allocators used in C++0x? What are the use cases where member types are not sufficient?

0 投票
2 回答
649 浏览

c++ - 你如何声明分配器?

我正在尝试在 cpp 中重新创建内置向量类,以便在类和内存管理方面进行更多练习。我不断收到一条错误消息,上面写着“ISO C++ 禁止声明没有类型的'分配器'”,我无法弄清楚为什么会这样。有什么我想念的吗?

0 投票
2 回答
1524 浏览

c++ - c++中stl::map的重载分配器和释放器

是否可以在 C++ 中重载 stl::map 的分配器/释放器?如果是,那怎么办?任何帮助,将不胜感激。

0 投票
1 回答
879 浏览

c++ - 默认模板模板参数的语法

我写了一个类似列表的模板类 sll(单链表)。现在,我正在尝试为其插入一个分配器。我有默认分配器分配器和基于池的分配器 pool_allocator。这些是在 STL 分配器接口之后设计的,但我需要添加分配器将处理的元素数量(max_size)作为模板参数。所以,我做了以下事情。

如果客户使用,我想支持两种:

我遇到的困难是在 sll 模板类中指定默认分配器。最初我有

它可以工作,但问题是,用户不能指定分配器的容量。

我试过了

但我收到错误:

我尝试了一些其他组合,但没有一个有效。在这一点上,我没有想法,并寻求 SO 社区的帮助。任何建议或指针表示赞赏。

0 投票
1 回答
1369 浏览

c++ - C++:为什么我对“std::uninitialized_copy”的调用不起作用?

我构建了一个简单的类,它应该模仿 std::string 类的功能(作为练习!):

为了避免与“new”相关的开销(并增加我对<memory>标题的熟悉度),我选择使用库的分配器模板类来为我的字符串分配内存。这是我在复制构造函数中使用它的示例:

编译器不断告诉我“uninitialized_copy”行上的两个错误,这两个错误都导致库中的标题,:

问题是我不明白从 char 到 char* 的转换在哪一行,以及为什么不能将相同类型的两个指针(str.first、str.onePastLast)与“!=”进行比较。

我可以使用“新”,但如前所述,我想练习<memory>. 那么有人可以告诉我为什么这不起作用吗?

0 投票
5 回答
1425 浏览

c++ - 使用基于动态/状态的分配器的 STL 实现?

有谁知道允许动态分配器在使用前传递给容器实例的 STL 实现。

场景是我们有一个通用的内存分配器,它管理多个内存池,并且对于 stl::vector 的每个实例,我们希望从不同的内存池中分配每个实例。

标准 STL 实现的问题在于,您只能基于类型定义内存池,即所有 int 类型的向量将从同一个池中分配。

我已经将我们的默认 stl::allocator 换成了一个状态,即我们想要从中分配这个实例的池,但这不适用于 stl::list ,它在默认 ctor 中分​​配东西。

由于与我们的库相关的原因,我们在 ctor 中也没有针对所有对象的有效池,因此我们希望在用户可以使用 stl 容器之前调用“设置内存池”函数。

有没有人遇到过支持这种事情的实现?