当前位置:  开发笔记 > 编程语言 > 正文

std :: vector中的clear()是否会产生内存泄漏?

如何解决《std::vector中的clear()是否会产生内存泄漏?》经验,为你挑选了2个好方法。

我的问题几乎是这个问题的延伸:std :: vector内存是否清除了?

在这里,人们解释说,调用clear()后,不会释放为std :: vector元素分配的内存.但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?

如果没有(如果内存继续只分配给这个向量,我不能再访问它)是不是像指针那样的内存泄漏?然后清楚()单独使用时这样会完全不安全吗?

如果有人能在这一点上澄清我,我会很高兴.谢谢.



1> You..:

在这里,人们解释说,调用clear()后,不会释放为std :: vector元素分配的内存.但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?

不,内存仍将由std::vector实例保留,并且在向量本身被销毁或被shrink_to_fit称为1之前,其余程序将无法使用.

如果没有(如果内存继续只分配给这个向量,我不能再访问它)是不是像指针那样的内存泄漏?

并不是的.当向量被破坏时,内存仍然被释放.

然后清楚()单独使用时这样会完全不安全吗?

正如@ user2079303雄辩地说出来的那样; clear本质上不安全,但假设它将释放内存可能是.

1. 潜在的.呼叫shrink_to_fit不保证释放任何内存.



2> eerorika..:

std :: vector中的clear()是否会产生内存泄漏?

没有.

但是这个内存对于操作系统来说是免费的,以允许其他程序使用它,还是可以让我的程序在其他任何地方使用它?

操作系统可以将内存交换到磁盘,以允许其他程序使用物理内存.

如果继续仅为此向量分配内存,我将无法再访问它

您可以通过向向量中添加新对象来重用内存.或者通过摧毁矢量释放它.析构函数绝对保证释放内存.

是不是像指针一样的内存泄漏?

不会.当指向内存的指针丢失时,会发生内存泄漏.但在这种情况下,向量可以安全地跟踪指针,并在销毁时释放它.

然后清楚()单独使用时这样会完全不安全吗?

clear 本质上不安全,但假设它将释放内存可能是.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有