我的问题几乎是这个问题的延伸:std :: vector内存是否清除了?
在这里,人们解释说,调用clear()后,不会释放为std :: vector元素分配的内存.但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?
如果没有(如果内存继续只分配给这个向量,我不能再访问它)是不是像指针那样的内存泄漏?然后清楚()单独使用时这样会完全不安全吗?
如果有人能在这一点上澄清我,我会很高兴.谢谢.
在这里,人们解释说,调用clear()后,不会释放为std :: vector元素分配的内存.但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?
不,内存仍将由std::vector
实例保留,并且在向量本身被销毁或被shrink_to_fit
称为1之前,其余程序将无法使用.
如果没有(如果内存继续只分配给这个向量,我不能再访问它)是不是像指针那样的内存泄漏?
并不是的.当向量被破坏时,内存仍然被释放.
然后清楚()单独使用时这样会完全不安全吗?
正如@ user2079303雄辩地说出来的那样; clear
本质上不安全,但假设它将释放内存可能是.
1. 潜在的.呼叫shrink_to_fit
不保证释放任何内存.
std :: vector中的clear()是否会产生内存泄漏?
没有.
但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?
操作系统可以将内存交换到磁盘,以允许其他程序使用物理内存.
如果继续仅为此向量分配内存,我将无法再访问它
您可以通过向向量中添加新对象来重用内存.或者通过摧毁矢量释放它.析构函数绝对保证释放内存.
是不是像指针一样的内存泄漏?
不会.当指向内存的指针丢失时,会发生内存泄漏.但在这种情况下,向量可以安全地跟踪指针,并在销毁时释放它.
然后清楚()单独使用时这样会完全不安全吗?
clear
本质上不安全,但假设它将释放内存可能是.