使用类向量时,是否会遇到内存泄漏? (C ++)

时间:2014-12-03 10:13:50

标签: c++ class vector memory-leaks

我在程序中使用了很多向量,我想避免内存泄漏。这是一个包含我自己创建的类的向量的示例。

vector<MyClass> objects;

objects = vector<MyClass>(10);

如您所见,我没有使用“new”运算符,并且向量不是指针类型。如果不以某种方式删除向量,我是否仍然会遇到内存泄漏?如果是这样,我如何删除向量并释放内存?

2 个答案:

答案 0 :(得分:1)

不,您不会以这种方式直接遇到与矢量相关的内存泄漏。实际上,objects自动存储持续时间的变量。这意味着您创建的变量将存在于您创建的范围内。如果您已在函数中创建它,并且如果/ for / while / etc范围甚至是原始块范围,它将在同一范围的末尾清除,而不需要您的任何操作。< / p>

然后,没有任何东西阻止你的班级本身泄漏,例如如果你拥有某些记忆的所有权并且没有作为你班级的一个实例发布它就会消失。

答案 1 :(得分:1)

内存泄漏被定义为存在的内存,但由于丢失了指针,因此您无权访问。在循环中执行此操作,您将无法快速获取可用内存。

如果不使用new动态分配内存,则不会出现内存泄漏。

让我们假设您在循环中向此向量添加实例。这会消耗大量内存。但这不是泄密,因为你知道完全你的记忆在哪里。如果不再需要,你仍然可以释放它。