在C++ vector <T>中释放内存

Shr*_*roy 1 c++ memory-leaks

以下是我现在可以构建的最佳"最小工作示例".我想了解以下代码是否泄漏了内存.

// 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;
}
Run Code Online (Sandbox Code Playgroud)

我是否正确地认为,由于delete每次调用都没有相应的调用new,这个程序确实泄漏了内存?

Oli*_*rth 9

是的,有内存泄漏. push_back复制它的参数,因此原始文件永远丢失(不再有指向它的指针).