我的问题基本上是这个问题的延伸:Is std::vector memory freed upon a clear?
在那里,人们解释说,在调用clear()之后,为std::vector元素分配的内存不会被释放。但是,这个内存会为操作系统释放以允许其他程序使用它,还是仅可供我的程序在其他地方使用?
如果不是(如果内存仅继续为此向量分配且我无法再访问它),那么这不就像我们在使用指针时遇到的内存泄漏吗?那么仅使用clear()就完全不安全了,对吧?
如果有人能澄清这个问题,我会很高兴的。谢谢。
如果不是(如果内存仅继续为此向量分配且我无法再访问它),那么这不就像我们在使用指针时遇到的内存泄漏吗?那么仅使用clear()就完全不安全了,对吧?
如果有人能澄清这个问题,我会很高兴的。谢谢。
delete
也不能保证实际上释放了任何内存。 - PaulMcKenziemalloc
,并且没有操作的free
,那确实会非常快。 - eerorikashrink_to_fit
不能保证释放所有内存”。例如,一个vector<char>(1)
可能无法缩小到 1 字节,因此如果需要,它可以保留 8 或 16 个字节。 - Bo Persson