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

标签 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;
}

我的想法是否正确,因为每次调用 new 时都没有相应的 delete 调用,所以这个程序确实泄漏了内存?

最佳答案

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

关于c++ - 在 C++ vector<T> 中释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746360/

相关文章:

c++ - Visual C++ 错误

c++ - mac 和相对强大的桌面之间令人费解的性能差异

c++ - std::istreambuf_iterator<char> 初始化时没有参数?

C++:动态内存分配和类构造函数

c++ - 防止在 main 之后 self 破坏?

c++ - 静态库 API 问题(std::string 与 char*)

c++ - VS2012 混合 C 和 Cpp,库冲突

android - 从 android.view.GLES20DisplayList 释放位图

c++ - 使用 Char* 查找内存泄漏的原因

objective-c - 这会造成泄漏吗?