gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-27 23:45:59 24 4
gpt4 key购买 nike

我有这样的代码,当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/

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