std::string::clear和std::list::clear是否从内存中擦除数据
Does std::string::clear and std::list::clear erases data from memory
在字符串::clear函数的描述中,它说:
清除:删除字符串的内容,该字符串将变为空字符串(长度为0个字符)。
在列表的描述中::clear函数,它说:
清除:从列表容器中删除所有元素(已销毁),并使容器的大小为0。
清除是覆盖字符串和列表的内存,还是只是释放它们?
这两个函数都不需要覆盖已擦除的数据。
内存不会被覆盖。它甚至不能保证被释放。
例如,如果创建一个巨大的字符串并对其调用clear
,则只会减小其大小,但分配的内存可能仍然保留。但是,如果字符串超出范围,它将被释放。
std::list
至少保证,如果清除列表,列表中的元素将被销毁。
因此,如果内存中包含敏感数据,则应该手动覆盖它们。
相关文章:
- 如果 std::vector::clear() 不是静态的,如何在没有实例的情况下调用它?
- 为什么不能通过在错误输入后设置 std::cin.clear() 来使用 std::cin?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在从 std::vector 移动的上调用 .clear()、.shrink_to_fit()、.empty() 是否合
- std::map.clear()正在引发读取访问冲突
- 为什么 std::cin.clear() 在这个简单的程序中不起作用?
- 为什么 std::string_view 没有 assign() 和 clear() 方法?
- std::vector中的clear()是否会产生内存泄漏
- VS2010: assert "vector iterators incompatible" in std::vector.clear()
- std::map::clear 和 elements' 析构函数
- 为什么C++ std::list::clear() 不调用析构函数
- Lint更喜欢在std:string上使用erase()方法,而不是clear()方法
- 在使用运算符=进行赋值之前,需要调用std::vector.clear()
- 执行std::string::clear回收与字符串关联的内存
- 为什么c++11标准库中没有std::clear
- 使用ATOMIC_FLAG_INIT和std::ATOMIC_FLAG::clear有什么区别
- std::vector<std::p air<const int, const int> >::clear() VS 2010 no-compile
- 为什么'clear'方法可以将" "分配给 std::string?
- 如何"clear" std::p romise?
- visual C++ - 调用 std::vector 的 .clear() 时访问违规