使用类向量时会遇到内存泄漏吗?(C++)
Can I encounter memory leaks when using vectors of classes? (C++)
我在程序中使用了大量向量,我想避免内存泄漏。下面是一个包含我自己创建的类的向量示例。
vector<MyClass> objects;
objects = vector<MyClass>(10);
如您所见,我没有使用"new"运算符,并且向量不是指针类型。如果不以某种方式删除矢量,我仍然会遇到内存泄漏吗?如果是这样,如何删除向量并释放内存?
不,您不会以这种方式直接遇到与向量相关的内存泄漏。实际上,objects
是一个具有自动存储持续时间的变量。这意味着您创建的变量将位于您创建它的作用域中。如果你在一个函数中创建了它,并且if/for/while/etc范围甚至原始块作用域,它将在同一作用域的末尾被清理,而无需你执行任何操作。
然后,没有什么可以阻止你的类本身泄漏,例如,如果你拥有一些内存的所有权,并且不把它作为你的类的实例释放。
内存泄漏定义为存在的内存,但由于丢失了指针,您再也无法访问内存。在循环中执行此操作,您将很快耗尽可用内存。
如果不使用 new
动态分配内存,则不会出现内存泄漏。
假设您在循环中向此向量添加实例。这会消耗大量内存。但这不是泄漏,因为你确切地知道你的记忆去了哪里。如果不再需要,您仍然可以释放它。
相关文章:
- valgrind-hellgrind与泄漏检查的结果不同
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 尽管遵循了规则,内存泄漏在哪里
- 为什么调用堆栈数组会导致内存泄漏
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- 使用模板类的自定义列表类型中的内存泄漏
- 为什么以下C++代码中存在内存泄漏?
- Klocwork Inside的资源泄漏
- OpenCV 我应该使用智能指针来防止内存泄漏吗?
- 我是否生成线程并导致内存泄漏?
- 多线程程序中出现意外的内存泄漏
- 为什么此函数会导致内存泄漏?
- 在 C++ 库中使用cythonized python时内存泄漏
- 需要帮助查找内存泄漏
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 瓦尔格林德的内存泄漏使用新的
- CPP 中的瓦尔格林德和记忆泄漏:"Conditional jump or move depends on uninitialised values"
- 无法找出我的代码中的内存泄漏