我正在使用Valgrind来检查内存泄漏.不幸的是我收到了Leak_DefinitelyLost警告.
附件是我的代码的简化版本,它重现了错误:
#include <iostream>
#include <vector>
#include <memory>
#include <unordered_map>
using namespace std;
class Base{
public:
explicit Base(double a){
a_ = a;
}
virtual void fun() = 0;
protected:
double a_;
};
class Derived_A : public Base{
public:
Derived_A(double a, vector<double> b, vector<double> c): Base(a), b_{b}, c_{c}{
}
void fun() override{
cout << "Derived_A " << a_ << endl;
}
private:
vector<double> b_;
vector<double> c_;
};
class Derived_B : public Base{
public:
Derived_B(double a, double b, double c): …Run Code Online (Sandbox Code Playgroud) c++ memory-leaks undefined-behavior unique-ptr virtual-destructor
可能重复:
C编程:free如何知道要释放多少?
怎么delete知道它有多少字节可以免费?我读到在new返回的实际指针地址之前有一些块,其中包含块地址详细信息.
这里的任何人都知道这个块有多少字节或者该块的格式是多少?