gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:50:37 27 4
gpt4 key购买 nike

我是这门语言的新手,我对内存泄漏有一个基本的怀疑。不使用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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com