c++ - 如何修复 C++ 内存泄漏?

标签 c++ memory-leaks

我有这样的代码,当class A管理对象 Bvector<shared_ptr<B>> ,然后我创建一个 A从静态方法中,当我这样做时,我想如果 A::returnA()超出范围,然后 A::returnA()将被删除,然后 BA 管理被删除,那么vector<shared_ptr<B>>被删除。

但是,当我运行这段代码的时候,monitor显示的内存使用量很大,而且还在不断增加,不知道为什么这是内存泄漏。

#include <vector>
#include <memory>
#include <iostream>
using namespace std;

class A {
public:
    static A returnA(){
        return A();
    }
    class B {
    public:
        ~B() { cout << "~B" << endl; }
    };
    B b;
    vector<std::shared_ptr<B>> v;
    A(){
        std::unique_ptr<B> b2 = make_unique<B>();
        v.emplace_back(new B());
    };
    ~A() { cout << "~A" << endl; }
};

int main() {
    while(1){
        A::returnA();
    }
}

enter image description here

最佳答案

您的屏幕截图未显示您应用的内存。它显示了 Xcode 的内存。占用大量内存的是 Xcode,可能是因为它保留了 cout 的日志,因此您可以滚动浏览它。

关于c++ - 如何修复 C++ 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558698/

相关文章:

c++ - 如何创建一个可以使用 Boost 和 OpenCV 读取文件夹中所有图像的程序?

c++ - QFile.write() 只写入大文件的前 22MBytes

c++ - 我找不到此函数中的内存泄漏 (SDL/OpenGL)

c# - MonoMac 上的 native 发布错误,可能与事件有关

c++ - 使用 CRT 库查找特定的内存泄漏

c++ - 递归函数导致栈溢出

c++ - Boost 将默认边权重设置为 1

libstdc++ 中的 C++ 映射括号运算符

ios - 导航 Controller 后退按钮未释放已关闭的 viewController 的内存

silverlight - 为 Silverlight 行为自动调用 OnDetaching()