59得票4回答
使std::vector分配对齐内存

是否可以使自定义结构体的std::vector分配对齐内存,以便使用SIMD指令进行进一步处理?如果可以使用Allocator来实现,是否有人能够分享这样的allocator?

7得票1回答
复制有状态内存分配器:标准库分配器语义和内部内存

我正在编写一组分配器,旨在用于非常高性能的环境中,因此稍微受限的使用(由编译器调节,而不是运行时错误)是可取的。我已经阅读了C++11状态分配器的语义以及符合容器的预期使用方式。 下面贴出一个简单的分配器,它只包含分配器对象内的一块内存。在C++03中,这是不合法的。 template &...

59得票3回答
std::vector在增加容量时是否必须移动对象?或者,分配器是否可以“重新分配”?

一个不同的问题启发了以下想法: 当 std::vector<T> 增加其容量时,是否必须移动所有元素? 据我所知,标准行为是底层分配器请求一个新大小的整个块,然后将所有旧元素移动过去,然后销毁旧元素,最后释放旧内存。 在标准分配器界面给出的情况下,这种行为似乎是唯一可能的正确...

10得票2回答
C++17标准是否保证联合体的地址与其成员的地址相同?

我目前正在编写一个池分配器。我的问题归结为以下代码: template <typename T> union myUnion { T data; myUnion<T>* nextUnion; }; void someFunction(){ m...

8得票1回答
为什么std::allocator::construct和std::allocator::destroy要以元素类型为模板参数?

std::allocator的construct和destroy成员函数是基于要构造的元素类型进行参数化的: template<class T> class allocator { public: typedef T value_type; typedef...

8得票1回答
用户提供的std::allocator专业化

位于::std命名空间的类模板通常可以由程序为用户定义的类型进行专门化。我没有发现任何关于std::allocator的特殊规定。 那么,我是否可以为自己的类型专门化std::allocator?如果可以,是否需要提供std::allocator主模板的所有成员,鉴于许多成员可以由std::...

13得票7回答
字符串容量值的用途

在C++标准库中,std::string有一个公共成员函数capacity(),该函数返回内部分配存储的大小,这个值大于或等于字符串中的字符数(参见这里)。这个值可以用来做什么?它是否与自定义分配器有关?

9得票2回答
我能使用自定义分配器来为std::array管理安全的加密密钥吗?

我知道std::array在栈中完全被分配,但是这个问题的动机是出于需要满足以下两点安全考虑: std::array中的数据将在销毁时清零或随机化 std::array中的数据将被锁定,以便在崩溃或交换内存时不会写入磁盘 通常情况下,使用std::vector的解决方案是创建一个自定义...

7得票1回答
C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

我有一个名为vector<vector<int>>的变量,想要整个内存(即外层和内层vector)都来自于memory_resource。这是一个简化示例,首先是无聊的部分: #include <boost/container/pmr/memory_resour...

9得票4回答
自定义分配器的性能

我正在构建一个AVL树类,它将有一个固定的最大项目数。因此,我想,与其逐个分配每个项目,不如一次性分配整个块,并使用位图在需要时分配新内存。 我的分配/释放代码: avltree::avltree(UINT64 numitems) { root = NULL; if (!numi...