簡體   English   中英

如何修復C ++內存泄漏?

[英]how to fix c++ memory leaks?

我有這樣的代碼,當class A管理對象Bvector<shared_ptr<B>> ,我從靜態方法創建一個A ,當我這樣做時,我認為A::returnA()超出范圍,則將刪除A::returnA() ,然后刪除由A管理的B ,然后刪除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();
    }
}

在此處輸入圖片說明

您的屏幕截圖未顯示您的應用程序的內存。 它顯示了Xcode的內存。 Xcode占用了大量內存,可能是因為它保留了cout的日志,因此您可以滾動瀏覽它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM