我有这样的代码,当class A
管理对象 B
和 vector<shared_ptr<B>>
,然后我创建一个 A
从静态方法中,当我这样做时,我想如果 A::returnA()
超出范围,然后 A::returnA()
将被删除,然后 B
由 A
管理被删除,那么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();
}
}
最佳答案
您的屏幕截图未显示您应用的内存。它显示了 Xcode 的内存。占用大量内存的是 Xcode,可能是因为它保留了 cout
的日志,因此您可以滚动浏览它。
关于c++ - 如何修复 C++ 内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50558698/