c++ - 如果我不使用 new 关键字,我会发生内存泄漏吗?

标签 c++ memory-leaks

我是这门语言的新手,我对内存泄漏有一个基本的怀疑。 不使用new关键字会不会泄露? (即在堆栈中使用我的变量并使用像 std::vector 这样的数据容器)

我应该担心这个问题吗?

如果是这样的话,有人能给我一个没有动态分配内存而造成泄漏的情况的例子吗?

最佳答案

i.e having my variables in the stack and using data containers like std::vector

不,使用 std::vector 或其他标准容器您不必担心。

can someone give me an example of a situation that creates a leak without dynamically allocating memory?

一个常见的错误是以下形式的循环依赖智能指针:

class Child;
class Parent {
     std::vector<std::shared_ptr<Child>> childs;
};

class Child {
     std::shared_ptr<Parent> parent;
};

由于共享指针的引用计数器永远不会降为零,因此这些实例永远不会被删除并导致内存泄漏。

可以在此处找到有关导致这种情况的原因以及如何避免这种情况的更多信息

关于c++ - 如果我不使用 new 关键字,我会发生内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54336422/

相关文章:

c++ - Qt - 使用带有父参数的 new 创建对象 - 不删除?

c++ - valgrind 在使用 libxml2 时向我显示泄漏

ios - CFURLCacheNode swift 泄漏?

flash - AS3 将函数作为参数传递会造成内存泄漏

c++ - getline 不读取文件或从文件返回

c++ - 试图拒绝负数并让人们选择另一个但它完成了

c++ - 创建非默认可构造类的虚拟对象

c++ - 使用 QwtPlotCurve 断开第一个和最后一个点

java - 最小化图中的桥数

iphone - 我的应用程序崩溃了,但除了数据格式化程序暂时不可用的行之外没有显示任何内容,我现在应该做什么?