allocator相关内容
我使用自定义分配器来处理多个容器中的内存使用情况。目前我使用静态变量来计算内存使用。如何在多个容器中分离此帐户,而无需重写分配器以使用不同的静态变量? static size_t allocated = 0; template class accounting_allocator { public: //类型定义 typedef T value_t
..
我使用自定义分配器来处理多个容器中的内存使用情况。目前我使用静态变量来计算内存使用。如何在多个容器中分离此帐户,而无需重写分配器以使用不同的静态变量? static size_t allocated = 0; template class accounting_allocator { public: //类型定义 typedef T value_t
..
简而言之,我的问题是:如果你有类, MyClass ,如何更改类定义支持 MyClass ,类似于如何说,STL向量提供。 我需要此功能来支持共享内存的分配器。具体来说,我试图在共享内存中实现一个环形缓冲区。目前它有以下ctor: 模板 SharedMemoryBuffer :: Shared
..
在C ++和标准库上阅读书籍时,我经常看到对分配器的引用。 例如,Nicolai Josuttis的 >在最后一章详细讨论它们,以及Scott Meyers的 Effective STL 中的两个项目10(“注意分配器的约定和约束”)和11(“理解自定义分配器的合法使用” 我的问题是,分配器如何代表一个特殊的内存模型?是默认的STL内存管理不够吗? 如果可能,请用简单的内存模型示
..
“经典的”STL容器,例如 std :: vector 和 std :: map 作为模板参数。这意味着 std :: vector> 和 std :: vector例如被认为是完全独立的类型。 一些较新的分配器感知类如 std :: shared_ptr 和 std :: tuple 使用type-
..
我想找到一种方法来存储几个 std :: vectors ,每个不同的但已知的,相当小的大小,在连续的内存中。我意识到我可以写我自己的类,说一个非常大的数组,并指向数组的每个子部分的开始在更大的数组中被视为一个单独的实体,但似乎应该有一个更聪明的方式做这个。 是否有使用 allocators 的方法,例如创建连续的 std :: vectors ?我想不要重新发明轮子只是因为我想要这个记忆区
..
新的C ++ 11标准需要STL实现来支持容器中的状态分配器。主要的STL实现(Visual Studio 2008,2010,libstdc ++)现在是否符合这个要求?我什么都没有发现这个在MSDN或的libstdc ++文档。 解决方案 看起来像STL容器状态分配器的特点是广泛的支持已经。在大多数情况下,分配器的statefullness不会引起麻烦。什么是不广泛尚不支持是处理该问题
..
一个简单的指针增量分配器(他们有一个正式名称?)我在寻找一个无锁算法。这似乎微不足道,但我想得到soem反馈,我的实现是否正确。 不是线程安全实现: byte * head; //剩余缓冲区的当前头 字节* end; //剩余缓冲区结束 void * Alloc(size_t size) { if(end-head
..
我编写一个分配器集合,目的是要在非常高性能的环境中使用,所以一点点限制使用(由编译器调解,而不是运行时错误)是可取的。我已经阅读了状态分配器的C ++ 11语义,以及它们如何被合适的容器使用。 我粘贴了一个简单的分配器下面只包含allocator对象内的一块内存。在C ++ 03中,这是非法的。 template
..
我在Windows 7上使用C ++的MSVC 9.0,并已经能够测试和重现在Windows XP SP3与MSVC 9.0。 如果我分配1 GB的0.5 MB大小的对象,当我删除它们,一切都是确定和行为正如预期。但是,如果我在删除它们时分配1 GB的0.25 MB大小的对象,则内存将保留(在地址空间监视器),从那时起只能用于小于0.25 MB的分配。 这个简单的代码将允许你通过改变哪
..
我想写一个四叉树稀疏矩阵类。简而言之, quadtree_matrix 是零矩阵或四元(ne,nw,se,sw) quadtree_matrix 。 我想最终测试不同的分配方案,因为这可能会影响线性代数运算的性能。因此,我还将在标准分配器类型上使用模板 quadtree_matrix ,以便我可以重用现有的分配器。 必须分配两种不同类型的数据: T 或节点,其中包含四个指针T或
..
8年前,Stephen Lavavej发布了此博文,其中包含简单的分配器实现,命名为“Mallocator”。从那时起,我们已经转换到C ++ 11的时代(很快C ++ 17)...新的语言特性和规则是否会影响Mallocator,还是仍然是相关的? 解决方案 STL自己在他的 STL功能和实现技术在CppCon 2014(从26'30开始)讲话。 幻灯片在github上。 我
..
我要建立一个自定义分配器,预先分配一个大块(数组)用于存储 N $ c> T ,然后只是增加数组内的索引来服务分配请求。 / em>想要预分配块中的元素的任何初始化,这样的东西将不起作用: T buffer [N]。 因为在这种情况下 T 的构造函数 因为我的理解是 std :: aligned_storage 不调用 T 的构造函数,我想到使用 std
..
作为此问题的后续工作,默认分配器( std :: allocator void construct(U * p,Args& ... args); :: new((void *)p)U(std :: forward& Ar
..
在C ++ 11标准中,我们在动态内存管理库中拥有 std :: scoped_allocator_adapter 。这个类最重要的用例是什么? 解决方案 如果你想要一个容器的字符串,并希望使用相同的分配器容器及其元素分配在相同的领域,如TemplateRex描述),那么你可以手动做到: template
..
我知道我可以使用语法 vector 为向量设置自定义分配器。有没有办法我可以做同样的字符串? 解决方案 是的。所有字符串类都来自类模板 basic_string ,声明如下: template, class Allocator = allocator
..
有一个模板参数为STL容器选择自定义分配器。花了一段时间,但我想我明白它是如何工作的。不知怎的,它不是真的很好,因为给定的分配器类型不是直接使用,而是反弹到另一种类型的分配器。最后我可以使用它。 阅读 API 我认识到,还有可能给分配器作为构造函数参数。但是如何知道容器使用哪种分配器,如果它从模板参数里面重新绑定给定的分配器? 此外,我读到C ++ 11现在使用作用域分配器允许重用容器
..
我试图使用自定义内存分配器 std :: unique_ptr 。基本上,我有自定义分配器,它是 IAllocator 的子类,它提供了以下方法: code> void * Alloc(size_t size) template T * AllocArray(size_t count) void Free(void * mem) template
..
我有两个问题: 1)是否可以实现一个使用alloca在堆栈上分配内存的分配器,否则是C ++ STL兼容? p> 如果有代码,你可以让我快乐,只需指向我的URL。 :-) 如果没有代码,也许你可以草拟函数allocate和deallocate? 2)如果上面的问题的答案是'yes',我想了解如何在类成员的堆栈上分配内存。作为示例,考虑 std :: vector
..
是否可以为 std :: vector 内部分配使用自定义分配器?如果是,如何? 解决方案 你基本上必须实现你的分配器类型符合
..