问题标签 [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 回答
638 浏览

c++ - allocator.construct 循环是否等于 std::uninitialized_copy?

在此上下文T中是某种类型,并且allocator是该类型的分配器对象。默认情况下是这样,std::allocator<T>但这不一定是真的。

我有一大块内存由allocator.allocate(n). 我还有一个对象容器conT例如 a std::vector<T>)。我想用对象初始化那块内存T

内存块的位置存储在T* data.

这两个代码示例总是相同吗?

而对于这两个?

0 投票
2 回答
574 浏览

c++ - 符合标准的自定义分配器

allocate将 0 传递给方法时可以抛出异常吗?

谢谢你。

附言

如果 n == 0,则返回值未指定。

这是否意味着不allocate应该抛出异常?我倾向于认为,如果 n==0 不允许投掷,那么标准会清楚地说明它。

0 投票
1 回答
213 浏览

compression - 具有内存压缩的分配器

我想知道,是否有项目/至少有一些关于内存压缩和内存分配器组合的研究(当然以牺牲一些速度为代价)?

例如,想象一下这样的场景:我们必须处理一棵巨大的树。这棵树不适合记忆。使用压缩分配器,我们几乎可以适应任何树。

当然,可以使用迭代方法而不立即构建树,但我的问题纯粹是理论上的(今天)。

可能取消引用需要特殊的宏/模板,以便分配器能够解压缩选定的区域。但是,如果一个区域引用另一个区域等怎么办?一定有一些非常复杂的算法,可能只能在托管语言中解决(但 Boehm 能够为 C++ 制作 GC!)

或者也许它是如此复杂/缓慢(甚至与节省的内存相比)根本不值得?虚拟内存和交换可能非常慢,尤其是在垃圾收集环境中。最近一个 1 gb 的应用程序使整个操作系统无响应......所以内核级机制不一定有效。

你可以把它想象成(我仍然试图向你保证这不是一个非常愚蠢的想法)作为反对快速用户模式 ​​futexes 与慢速本机互斥锁,快速用户模式绿色线程(如在 Erlang 中具有多达 2000 万个同时进程)机器)与较慢的本机线程等。

0 投票
2 回答
6869 浏览

c++ - 让 std::map 分配器工作

0 投票
2 回答
646 浏览

c++ - 用于扩展任意标准符合分配器的 C++ 设计模式

我目前正在寻找扩展任意标准符合分配器类型的最佳方法。明确一点:我不想编写自定义分配器。我只想将特定的扩展或行为“添加”到已经存在的扩展或行为。我已经创建了一个示例,它的外观如何。请注意,以下代码仅用于说明目的。

请考虑以下注意事项:

  • 模板参数 allocator_type 可以是任何标准符合类型。它不限于 std::allocator。这是所有 STL 实现都使用的相同技术。
  • 从 allocator_type 派生时,我们需要使用私有继承,因为 std::allocator 成员函数都不是虚拟的。然而, std::allocator& alloc = smart_allocator() 不会做你所期望的。

你认为这适用吗?

0 投票
2 回答
1777 浏览

c++ - C++ Design Pattern for allocator type arguments

The C++03 standard library uses simple template type arguments when passing a type to a class which is meant to be an allocator. This is possible because of how templates work in C++. However, it isn't very straightforward and you might don't know what exactly the type definition should look like - especially in case of non standard types.

I thought it might be a good idea to use adaptor classes instread. I've created an example to show you what I mean:

The implemention should be obvious. Here's some usage example.

is this an improvement compared to the usual way?

0 投票
1 回答
2891 浏览

c++ - tr1 的 unordered_map 中的自定义分配器

关于 unordered_map 的自定义分配器,我有一些问题。我有一个大数据集,我需要将字符串作为键进行散列。所以我开始知道提供自定义内存分配器可以优化速度。但是我该怎么做呢?(我检查了 SO,但我找不到任何关于使用自定义分配器的信息,尽管有一些与自定义哈希函数等相关的东西)

还有 unordered_map::size() 返回什么?它说它是最长的受控序列。我对这意味着什么感到困惑。是桶数本身还是其他?

非常感谢

0 投票
3 回答
145 浏览

c++ - C++ 默认分配器 - 如果大小不等于传递给分配调用的大小会发生什么?

20.6.9:

  • 要求:p 应该是从 allocate() 获得的指针值。n 应等于作为第一个参数传递给返回 p 的 allocate 调用的值。
  • 效果:释放 p 引用的存储空间。
  • 备注:使用 ::operator delete(void*) (18.6.1),但在调用此函数时未指定。

如果n不等于作为第一个参数传递给返回的 allocate 调用的值,会发生什么p?不解除分配?扔std::bad_alloc?...

编辑: 我对“应该发生什么”的真正意思是:在自定义实现中抛出或断言可以吗?

0 投票
1 回答
186 浏览

c++ - STL 容器库 - 在分配器类的不同实例上调用分配/解除分配是否合法?

首先,我认为不是。但是,我在调试模式下观察到 MSVC 10.0 的这种行为。我正在使用一个自定义allocator类,它依赖于用户仅将分配在同一实例上的指针传递给deallocate. 但是,在发布模式下,我的代码正在运行。

这是一个错误还是我弄错了?

0 投票
2 回答
2268 浏览

c++ - 编译器对 STL 容器中的状态分配器的支持

新的 C++11 标准需要 STL 实现来支持容器中的有状态分配器。现在主要的 STL 实现(Visual Studio 2008、2010、libstdc++)是否符合这个要求?我在 MSDN 或 libstdc++ 文档中对此一无所知。