【发布时间】:2012-09-07 18:23:09
【问题描述】:
写了一个简单的测试:
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
void myThreadRun() {
cout << "Thread id: " << boost::this_thread::get_id() << "\n";
}
int main() {
for (int i = 0; i < 10000; i++) {
boost::thread t(myThreadRun);
t.join();
}
return 0;
}
Valgrind Massif 在其上显示以下图表:
(堆栈分析已启用。平台:Linux Ubuntu x86)。
这个程序实际上似乎没有内存泄漏:内存使用是稳定的。
我想知道:这是 Valgrind 还是 boost::thread 的问题?还是我误解了什么?
你会怎么解释?
【问题讨论】:
-
在线程代码中没有
std::cout,你看到同样的东西吗? -
Valgrind 可能会取代线程处理,因此这些特定数据可能实际上并不代表真实的程序配置文件。
-
删除
std::cout不会改变任何东西。 -
我已经复制了这个并尝试了几件事来尝试修复或至少改变这种行为,但还没有运气。我仍然想知道 valgrind 是否在幕后做了一些奇怪的事情。
标签: c++ linux valgrind boost-thread