STL 容器使用的清零内存
Zeroing memory used by STL containers
我想使用 STL 容器(加 std::basic_string
)将密钥或密码临时存储在内存中,我想在完成后将内存清零。
我最初计划使用在自定义分配器上参数化的 STL 容器,该分配器将内存归零allocator::deallocate
,但我假设允许容器使用不是来自指定分配器的内存。 例如,std::vector
或std::string
包含用于小型分配的固定大小数组成员似乎是合理的。
是否应该担心,我应该(叹息)编写自己的容器吗?
我会将std::vector
与执行清零的自定义分配器一起使用。 根据 May std::vector 的答案,它不能使用小缓冲区优化,因此,使用自定义分配器,您应该是安全的。
如果你更进一步,使用该分配器来分配向量,然后使用智能指针来确保它正确释放(或手动执行),甚至向量的内部内容(例如大小)也会被清除。
您可以通过使用原始内存分配字符串/向量并放置 new 来执行此操作,完成后,调用析构函数、零内存并释放原始内存。
使用在其析构函数中将内存缓冲区清零的自定义字符串类。
class zeroed_string : public std::string
{
public:
~zeroed_string()
{
for (int i = 0; i < size(); ++i)
(*this)[i] = 0;
}
// ...
};
相关文章:
- 具有 STL 向量类型成员的类的复制内存
- 擦除是否删除 stl 无序列图元素使用的堆内存
- 具有 STL 类 c++ 的结构的内存分配
- 有没有办法从 STL 获取无开销的原始内存容器
- C++ STL 向量保留太多容量会消耗大量内存吗?
- 在函数中实例化的 STL 对象正在占用堆栈或堆上的内存?
- c ++ stl 库容器具有动态内存分配
- C++ 使用数组初始化时的 STL 向量内存管理
- 内存泄漏的 STL 替代方案
- 为什么 XOCDE STL 源内存类型定义有 |象征
- 如何根据STL列表中的元素数量分配内存
- 没有碎片stl容器的大容量内存
- 没有stl和动态内存分配的成员函数类
- 对于长时间运行的程序,STL 内存管理是否"reliable"?
- 带有内存比较的 STL 映射.如何在运行时设置比较块大小
- STL 矢量 push_back() 内存双倍可用
- 在插入C STL地图之前,我需要使用新的内存分配内存
- 释放包含STL类的链接列表结构的内存
- 使用STL priority_queue时关于内存管理的建议
- 如何在不进行内存操作的情况下在 C++ 和 STL 中定义 2D 数组