Questions tagged «allocator»


3
polymorphic_allocator:我什么时候以及为什么要使用它?
这是有关cppreference的文档,这是工作草案。 我必须承认,我不了解其真正目的是什么polymorphic_allocator以及何时/为什么/如何使用它。 例如,pmr::vector具有以下签名: namespace pmr { template <class T> using vector = std::vector<T, polymorphic_allocator<T>>; } 什么是polymorphic_allocator要约?std::pmr::vector老式的报价又是什么std::vector?到现在为止我还不能做什么? 该分配器的真正目的是什么,我什么时候应该实际使用它?
122 c++  allocator  c++17 


1
旧的alloctaor :: construct与新的alloctaor和显式构造函数之间有什么区别?
据我所知std::allocator<T>::construct,在旧版本的C ++上仅需要两个参数;第一个是指向未构建的原始内存的指针,我们要在其中构造一个类型的对象,T第二个是用于初始化该对象的元素类型的值。因此,调用了复制构造函数: struct Foo { Foo(int, int) { cout << "Foo(int, int)" << endl; } /*explicit*/ Foo(int) { cout << "Foo(int)" << endl; } Foo(const Foo&) { cout << "Foo(const Foo&)" << endl; } }; int main(int argc, char* argv[]) { allocator<Foo> a; Foo* const p = a.allocate(200, NULL); // …
15 c++  allocator 

2
我可以对std :: array使用自定义分配器来获得安全的加密密钥吗?
我知道它std::array是完全分配在堆栈中的,但是这个问题是由需要考虑两点的安全问题引起的: 输入的数据在std::array销毁时将归零或随机化 输入中的数据std::array将被锁定,因此无论是崩溃还是交换内存,它都不会进入磁盘 通常情况下,用std::vector的解决方案是创建一个自定义分配器的是做这些事情。但是,对于std::array,我没有看到如何执行此操作,因此也没有看到这个问题。 我能做的最好的事情是: template <typename T, std::size_t Size> struct SecureArray : public std::array<T, Size> { static_assert(std::is_pod<T>::value, "Only POD types allowed") static_assert(sizeof(T) == 1, "Only 1-byte types allowed") virtual ~SecureArray() { std::vector<uint8_t> d = RandomBytes(Size); // generates Size random bytes std::memcpy(this->data(), d.data(), Size); } } 但这显然缺少内存锁定,std::array这使首先要使用的性能方案变得复杂std::array。 有更好的解决方案吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.