以下は、私が今構築できるベストの「最小の動作例」です。私は、次のコードがメモリをリークするかどうかを理解したいと思います。C++のベクトルのメモリ割り当てを解除する<T>
// Class CTest
class CTest {
vector<int> Elements;
CTest (vector<int>&);
~CTest();
};
CTest::CTest (vector<int>& Elements_) {
this->Elements = Elements_;
}
CTest::~CTest() {
}
// main
int main (int argc, char *argv[]) {
vector<CTest> V;
for (auto i = 0; i < 10; i++) {
vector<int> U;
for (auto j = i; j < i + 5; j++) U.push_back (j);
V.push_back (*(new CTest (U)));
}
// Do whatever
return 0;
}
私はnew
の各呼び出しのためのdelete
の対応する呼び出しがないので、このプログラムは、実際にメモリリークないことを考えで正しいですか?
同じ問題が発生しました:http://stackoverflow.com/q/8839943/46642 –