gpt4 book ai didi

c++ - 在 C++ vector 中释放内存

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:16:30 31 4
gpt4 key购买 nike

以下是我目前可以构建的最佳“最小工作示例”。我想了解以下代码是否会泄漏内存。

// 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com