gpt4 book ai didi

C++ 使用 boost::ptr_vector 泄漏内存

转载 作者:太空宇宙 更新时间:2023-11-04 16:20:24 25 4
gpt4 key购买 nike

当打开任务管理器查看内存使用情况时,它会以使用的 .3MB 内存开始。将 100,000 个对象添加到 ptr_vector 后,使用了 2.3MB 的内存。在 vector 上使用 .clear() 后,内存变为 .8-.9MB。内存使用量增加的原因是什么?

代码如下:

#include <iostream>
#include <boost/ptr_container/ptr_vector.hpp>

class T {
public:
static int nObjects;
T() {
nObjects++;
}
~T(){
nObjects--;
}
};

int T:: nObjects = 0;

int main() {
boost::ptr_vector<T> vec;
char pause;
std::cout << "Press any key to continue: ";
std::cin >> pause;

for(int i=0; i<100000; i++) {
vec.push_back(new T);
}

std::cout << T::nObjects << " objects created." << std::endl;

std::cout << "Press any key to continue: ";
std::cin >> pause;

vec.clear();
std::cout << T::nObjects << std::endl;

std::cout << "Press any key to exit: ";
std::cin >> pause;
return 0;
}

感谢您的帮助。

最佳答案

您不能依赖 Windows 任务管理器来使用内存,至少不是那样。

可能内存页被保留,以防你需要再次分配内存。

尝试在 for 循环中运行 main 中的内容(构造 vec + 循环内自动销毁)。
如果它不断增加,那么你可能确实有内存泄漏。

但我怀疑它会不会,除非你错误地使用了 boost::ptr_vector。

关于C++ 使用 boost::ptr_vector 泄漏内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17451016/

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