9

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

clear:擦除字符串的内容,变成空字符串(长度为0个字符)。

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

clear:从列表容器中移除所有元素(被销毁),并让容器的大小为 0。

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

4

2 回答 2

11

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

于 2013-07-10T19:46:08.830 回答
10

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

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

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

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

于 2013-07-10T19:46:29.060 回答