У меня есть такой код, когда class A
управляет объектом B
и vector<shared_ptr<B>>
, тогда я создаю A
из статического метода, когда я делаю это, я думаю, если A::returnA()
выходит изобласть действия, затем A::returnA()
будет удалена, затем удалено B
, управляемое A
, затем удалено vector<shared_ptr<B>>
.
Однако при запуске этого кода использование памяти отображается на монитореогромен, и продолжает расти, я не знаю, почему это утечка памяти.
#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();
}
}