allocator相关内容

弃用std :: allocator< void>

相关:为什么标准容器要求allocator_type :: value_type为元素类型? 据说自C ++ 17起不推荐使用以下内容: template struct allocator; 我想知道是否不推荐使用它,因为仅主模板现在就可以容纳allocator,或者不推荐使用allocator的用例. 如果是后者,我想知道为什么.我认 ..

std :: scoped_allocator_adaptor的用途是什么?

在C ++ 11标准中,动态内存管理库中有std::scoped_allocator_adaptor.此类中最重要的用例是什么? 解决方案 如果您想要一个字符串容器,并且想要为该容器及其元素使用相同的分配器(因此它们都与TemplateRex一起分配在同一区域中)说明),那么您可以手动执行此操作: template using Allocator = So ..
发布时间:2020-05-08 21:34:47 C/C++开发

std :: allocator是否在C ++ 17中处理过度对齐的类型?

C ++ 17引入了std::aligned_alloc和可识别对齐的new,它们可以进行过度对齐的分配,但是std::allocator呢?它可以处理过度对齐的类型吗? 解决方案 在N4659(C ++ 17 DIS)中, T *分配(size_t n); 返回:指向大小为n * sizeof(T)的存储数组的初始元素的指针,已针对T类型的对象适当对齐. 与C ++ 14相 ..
发布时间:2020-05-08 20:27:26 C/C++开发

需要为c ++ std :: vector编写共享内存分配器

请帮助为std :: vector类. 我找到的所有示例仅显示我需要覆盖哪些方法,而不是代码示例. 我需要使用Windows上的共享内存来实现分配器(使用CreateFileMapping和MapViewOfFile) 解决方案 我可以建议您看看增强功能我已经看到了一些例子,我想说的只是更多一点.我同意他们中没有一个人做得很完美,因此我不 ..
发布时间:2020-05-08 19:40:26 C/C++开发

C ++ STL分配器vs运算符new

根据C ++ Primer第4版,第755页,有一条注释说: 现代C ++程序通常应使用分配器类 分配内存.更安全,更灵活. 我不太明白这句话. 到目前为止,我阅读的所有材料都使用new教书以C ++分配内存. 本书展示了向量类如何利用分配器的一个示例. 但是,我想不出其他情况. 任何人都可以帮助澄清这一说法吗?再给我更多例子吗? 什么时候应该使用分配器,什么时候应该使用new? ..
发布时间:2020-05-08 19:20:33 C/C++开发

如何创建C ++ 11的非默认可构造分配器?

该主题出现在该线程中,涉及对Visual Studio 2015的std :: list :: sort()进行的更改: `std :: list :: sort ()`-为什么突然转向自上而下的策略? 新版本的std :: list :: sort不需要默认的可构造std :: list,因为它仅使用迭代器,并且不创建任何本地列表,因此列表是否可以无关紧要.默认构造.以前的版本使 ..
发布时间:2020-05-02 07:41:58 C/C++开发

为什么标准容器要求allocator_type :: value_type为元素类型?

相关:弃用std :: allocator . 对于 std::vector 和 std::list (重点是我): 分配器,用于获取/释放内存并用于 构造/销毁该内存中的元素.类型必须符合 分配器的要求. 如果未定义行为,则为 Allocator::value_type与T 不同. 最后一句话对我来说没有意义.如果需要特定的value_type,难道不是只是重新分 ..

是否将shared_ptr的删除器存储在自定义分配器分配的内存中?

说我有一个shared_ptr,带有一个自定义分配器和一个自定义删除器. 我在标准中找不到任何内容讨论删除器的存储位置:它没有说自定义分配器将用于删除器的内存,也没有说它是不会. 这是未指定的,还是我只是缺少一些东西? 解决方案 util.smartptr.shared.const/9在C ++ 11中: 效果:构造一个拥有对象p和删除器d的shared_ptr对象.第二 ..
发布时间:2020-04-27 04:50:09 C/C++开发

为什么在c ++ 17中不推荐使用std :: allocator的Construct和destroy函数?

c ++ 17规范弃用了std::allocator对象的construct和destroy成员.工作组在此处,在“弃用std :: allocator的冗余成员"标题下. 但是,他们没有具体提及为什么不赞成使用这两个成员,或者关于替换该功能的建议是什么.我假设其含义是使用std::allocator_traits::construct代替. 由于 由于此函数提供了自动回退到新放置的 ..
发布时间:2020-04-27 04:22:08 C/C++开发

分配器类型参数的C ++设计模式

C ++ 03标准库在将类型传递给旨在作为分配器的类时使用简单的模板类型参数。这是可能的,因为模板在C ++中的工作原理。但是,它不是很简单,你可能不知道什么是类型定义应该是什么样的 - 特别是在非标准类型的情况下。 我以为可能是使用适配器类instread的好主意。我创建了一个例子来告诉你我的意思: #ifndef HPP_ALLOCATOR_ADAPTOR_INCLUDED ..
发布时间:2017-05-16 19:11:55 C/C++开发

无法使用自定义分配器与allocate_shared / make_shared

在我的C ++ 11程序中,对于一些主动创建和删除的对象,我使用 shared_ptr 发生这样的情况,标准分配器 operator new 是一个瓶颈,所以我想创建一个自己的,一次分配一堆内存,然后给 make_shared 。 Unfortunatelly,这是我第一次写一个分配器,我不知道为什么GCC无法编译以下代码: #include class ..
发布时间:2016-11-06 00:49:02 C/C++开发

替换标准C ++分配器?

我想用一个更强大的分配器替换标准分配器(C ++标准只需要对vector :: resize进行溢出检查)。 我可以访问一个更健壮的分配器。 ESAPI的分配器不仅检查溢出,它还有调试工具来帮助发现错误。 http://code.google .com / p / owasp-esapi-cplusplus / source / browse / trunk / esapi / util / ..
发布时间:2016-10-28 02:12:13 C/C++开发

动态向量的特征库内存使用

我有一个二进制文件存储float32对象(9748422 * 5)。从这样一个集合(190MB大致大小),我创建了一套本征:: VectorXd 向量(每5组件),从而将它们的9748422。底层类型是 double ,因此大约是存储它们的输入大小的两倍。 但是,运气好的话,这个过程总共需要2.5GB。这是 PROCESS_MEMORY_COUNTERS 的日志: PageFault ..
发布时间:2016-10-25 15:29:12 C/C++开发

如何使用分配器精确地模拟新的T [n]?

表达式 new T [n] 可能会也可能不会初始化数组中的每个对象,取决于如何使用 allocator 复制此初始化行为? $ struct Foo { int x; Foo():x(1) {} }; Foo * p = new Foo [1]; assert(p [0] .x == 1); $ c $ b 在C ++ 03中,分配器接口只知道一种方式来初始化对 ..
发布时间:2016-10-25 15:10:45 C/C++开发