我在代码中使用了线程并发现了一些内存泄漏,因此我测试了以下简单代码。
#include <thread>
void foo(){}
int main()
{
for(; ;)
{
std::thread *th = new std::thread(foo)
th->join();
delete th;
}
}
我使用VC ++ Release模式对其进行了测试,没有任何设置更改,我也可以发现内存泄漏。当我使用Windows任务管理器检查过程时,该程序的内存不断增加。
我认为我的代码中的delete
不起作用。是否存在内存泄漏的原因?
更多细节
在我查看评论和答案后,我运行了该程序更长时间。我发现测试程序在几分钟后就没有使用更多内存。但是我无法确定为什么thread
在delete
之后使用更多内存(其他课程没有),并且我的程序在几分钟后仍会因内存使用量增加而关闭。在我的程序中,每个循环只使用11个thread
,因此内存使用量会缓慢增加,然后会突然关闭。
答案 0 :(得分:1)
我认为操作系统无法如此快速地管理线程的内存。 1)用一些间隔检查相同的代码 2)您在Windows任务管理器中看到哪个统计信息列?检查“已分配的内存”。