我一直在尝试在我的代码中使用线程,并且我发现在添加线程后存在内存泄漏。通常,代码占用400MB,但在我添加线程后,它增加到900MB并继续增加。
我制作了一个测试代码,以查看内存泄漏的来源,我发现它是for循环中的线程。经过短暂的等待,这个测试代码使用了超过100MB并且不断增长。 这段代码也与我正在处理的代码有点类似。
#include <iostream>
#include <thread>
void foo(){}
int main()
{
for(;;){
std::thread Ding(foo);
Ding.join();
}
}
我使用Windows 7和Code :: Blocks 16.01使用GNU GCC编译器版本4.9.2并使用任务管理器查看内存使用情况。
为什么此代码会不断增加其内存使用量,如何阻止它?