我使用visual studio 2015启动了一个新的MFC项目,并添加了一个简单的parallel_for函数,该函数汇总了从1到100的所有数字,并包含vld.h(Visual Leak Detector)以检测内存泄漏源。令我惊讶的是,当我关闭程序时,我在输出窗口中看到了200多个内存泄漏。 令人不安的代码是:
std::atomic<int> sum = 0;
void CChildView::RunTask()
{
parallel_for(1, 101, [&](int i)
{
sum += i;
});
TRACE(L"\nSum = %d", sum);
}
我还在任务管理器中注意到程序内存正在增长,所以这是一个真正的问题。我在这里失踪了什么?我知道这是一种合法的技术,所以我做错了什么?