C と Java の両方を理解した上で、C++ を学んでいます。私が書いたコードの一部がメモリ リークしない理由がよくわかりません。コードは次のとおりです。
// Foo.h
class Foo {
private:
std::vector<int> v;
public:
Foo();
virtual ~Foo();
void add_int(int);
}
// Foo.cpp
Foo::Foo(): v () {}
Foo::~Foo() {}
Foo::add_int(int x) {
v.append(x);
}
明らかに内部に格納されているベクトルはv
、解放する必要があるヒープ割り当てメモリへのポインターを格納しますが、解放することはありません。ただし、Valgrind は、このコードを使用してもまったくリークしないと述べています。その理由を理解することは、言語の理解を深めるのに役立つと思います。