在string :: clear函数的描述中,它说:
clear:删除字符串的内容,该字符串变为空字符串(长度为0个字符)。
在list :: clear函数的描述中,它说:
clear:从列表容器中删除所有元素(已销毁),并将容器的大小保留为0。
clear是否会覆盖字符串和列表的内存或者只是释放它们?
答案 0 :(得分:11)
不需要任何功能来覆盖已删除的数据。
答案 1 :(得分:10)
内存不会被覆盖。它甚至不能保证被释放。
例如,如果您创建一个巨大的字符串并在其上调用clear
,则只会减小其大小,但仍可保留分配的内存。但是,如果字符串超出范围,它将被释放。
std::list
至少保证如果清除列表,列表中的元素将被破坏。
因此,如果您的内存包含敏感数据,则应手动覆盖它们。