问题标签 [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.
c++ - 关联容器 - 异常而不是 C++ 中的默认构造
我正在寻找 C++ 中的关联容器,而不是要求它的元素是默认可构造的,而是会在请求未找到的键的情况下引发异常 - 编辑:在适当的函数中,显然不是全部需要默认构造。这基本上是因为我用一个打电话回家并告诉主对象分配了多少内存,因此需要知道“家”在哪里的分配器替换标准分配器。
multithreading - 使用 OpenMP 时的内存泄漏
下面的测试用例在使用 OpenMP 时在“post MT section”消息之后的循环中在 32 位机器上耗尽内存(抛出 std::bad_alloc),但是,如果 OpenMP 的#pragmas 被注释掉,则代码运行通过完成罚款,所以看起来当内存在并行线程中分配时,它没有正确释放,因此我们用完了内存。
问题是下面的内存分配和删除代码是否有问题,或者这是 gcc v4.2.2 或 OpenMP 中的错误?我也尝试了 gcc v4.3 并得到了同样的失败。
c++ - 覆盖 new 但告诉 unordered_map 不要使用它
我正在为 C/C++ 编写一个垃圾收集器作为编程练习,其中一部分涉及全局覆盖new
. 但是,垃圾收集器也使用 an unordered_map
(存储指向已分配块的指针),如果地图尝试使用覆盖的 new (我认为它会尝试无限循环),事情会变得严重混乱。为了创建它,我想使用placement new 来避免调用被覆盖的new:
(mem_t 是我定义的结构,但我认为这不相关。)运行时,此代码在 unordered_map 构造函数中出现段错误。我认为使用placement new 可以解决问题,但显然不是。我很确定 unordered_map 在内部调用 new 。会给它一个分配器(我该怎么做?)解决这个问题?如果不是,这个问题可以解决吗?
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?
c++ - 你如何声明分配器?
我正在尝试在 cpp 中重新创建内置向量类,以便在类和内存管理方面进行更多练习。我不断收到一条错误消息,上面写着“ISO C++ 禁止声明没有类型的'分配器'”,我无法弄清楚为什么会这样。有什么我想念的吗?
c++ - c++中stl::map的重载分配器和释放器
是否可以在 C++ 中重载 stl::map 的分配器/释放器?如果是,那怎么办?任何帮助,将不胜感激。
c++ - 默认模板模板参数的语法
我写了一个类似列表的模板类 sll(单链表)。现在,我正在尝试为其插入一个分配器。我有默认分配器分配器和基于池的分配器 pool_allocator。这些是在 STL 分配器接口之后设计的,但我需要添加分配器将处理的元素数量(max_size)作为模板参数。所以,我做了以下事情。
如果客户使用,我想支持两种:
我遇到的困难是在 sll 模板类中指定默认分配器。最初我有
它可以工作,但问题是,用户不能指定分配器的容量。
我试过了
但我收到错误:
我尝试了一些其他组合,但没有一个有效。在这一点上,我没有想法,并寻求 SO 社区的帮助。任何建议或指针表示赞赏。
c++ - C++:为什么我对“std::uninitialized_copy”的调用不起作用?
我构建了一个简单的类,它应该模仿 std::string 类的功能(作为练习!):
为了避免与“new”相关的开销(并增加我对<memory>
标题的熟悉度),我选择使用库的分配器模板类来为我的字符串分配内存。这是我在复制构造函数中使用它的示例:
编译器不断告诉我“uninitialized_copy”行上的两个错误,这两个错误都导致库中的标题,:
问题是我不明白从 char 到 char* 的转换在哪一行,以及为什么不能将相同类型的两个指针(str.first、str.onePastLast)与“!=”进行比较。
我可以使用“新”,但如前所述,我想练习<memory>
. 那么有人可以告诉我为什么这不起作用吗?
c++ - 使用基于动态/状态的分配器的 STL 实现?
有谁知道允许动态分配器在使用前传递给容器实例的 STL 实现。
场景是我们有一个通用的内存分配器,它管理多个内存池,并且对于 stl::vector 的每个实例,我们希望从不同的内存池中分配每个实例。
标准 STL 实现的问题在于,您只能基于类型定义内存池,即所有 int 类型的向量将从同一个池中分配。
我已经将我们的默认 stl::allocator 换成了一个状态,即我们想要从中分配这个实例的池,但这不适用于 stl::list ,它在默认 ctor 中分配东西。
由于与我们的库相关的原因,我们在 ctor 中也没有针对所有对象的有效池,因此我们希望在用户可以使用 stl 容器之前调用“设置内存池”函数。
有没有人遇到过支持这种事情的实现?