как исправить утечки памяти с ++? - PullRequest
0 голосов
/ 28 мая 2018

У меня есть такой код, когда 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();
    }
}

enter image description here

1 Ответ

0 голосов
/ 28 мая 2018

Ваш скриншот не показывает память вашего приложения.Это показывает память Xcode.Это Xcode, который занимает так много памяти, возможно, потому что он хранит журнал cout, чтобы вы могли просматривать его.

...