C ++简单的新&删除线程和内存泄漏

时间:2015-08-13 08:31:03

标签: c++ multithreading memory-leaks destructor

我在代码中使用了线程并发现了一些内存泄漏,因此我测试了以下简单代码。

#include <thread>

void foo(){}

int main()
{
    for(; ;)
    {
        std::thread *th = new std::thread(foo)
        th->join();
        delete th;
    }
}

我使用VC ++ Release模式对其进行了测试,没有任何设置更改,我也可以发现内存泄漏。当我使用Windows任务管理器检查过程时,该程序的内存不断增加。

我认为我的代码中的delete不起作用。是否存在内存泄漏的原因?

更多细节

在我查看评论和答案后,我运行了该程序更长时间。我发现测试程序在几分钟后就没有使用更多内存。但是我无法确定为什么threaddelete之后使用更多内存(其他课程没有),并且我的程序在几分钟后仍会因内存使用量增加而关闭。在我的程序中,每个循环只使用11个thread,因此内存使用量会缓慢增加,然后会突然关闭。

1 个答案:

答案 0 :(得分:1)

我认为操作系统无法如此快速地管理线程的内存。 1)用一些间隔检查相同的代码 2)您在Windows任务管理器中看到哪个统计信息列?检查“已分配的内存”。