我剛剛學習C++,來自對C和Java的理解。我不完全理解爲什麼我寫的一些代碼不會泄漏內存。下面的代碼:爲什麼不需要手動釋放載體?
// 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說使用這個代碼根本不會泄漏。我覺得這種理解爲什麼會有助於提高我對語言的理解。
代碼是否泄漏取決於您如何使用它。 –
否'new' ==否'delete'。就這麼簡單。該向量通過其析構函數釋放內存。 –