std::string::clear和std::list::clear是否从内存中擦除数据

Does std::string::clear and std::list::clear erases data from memory

本文关键字:std clear 数据 擦除 内存 list string 是否      更新时间:2023-10-16

在字符串::clear函数的描述中,它说:

清除:删除字符串的内容,该字符串将变为空字符串(长度为0个字符)。

在列表的描述中::clear函数,它说:

清除:从列表容器中删除所有元素(已销毁),并使容器的大小为0。

清除是覆盖字符串和列表的内存,还是只是释放它们?

这两个函数都不需要覆盖已擦除的数据。

内存不会被覆盖。它甚至不能保证被释放。

例如,如果创建一个巨大的字符串并对其调用clear,则只会减小其大小,但分配的内存可能仍然保留。但是,如果字符串超出范围,它将被释放。

std::list至少保证,如果清除列表,列表中的元素将被销毁。

因此,如果内存中包含敏感数据,则应该手动覆盖它们。