为什么Valgrind使用boost :: thread显示堆栈使用量增加?

wee*_*ens 13 c++ linux valgrind boost-thread

写了一个简单的测试:

#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;
}
Run Code Online (Sandbox Code Playgroud)

Valgrind Massif显示以下图表:

Valgrind Massif剖析上述例子的结果

(已启用堆栈分析.平台:Linux Ubuntu x86).

该程序实际上似乎没有内存泄漏:内存使用情况稳定.

我想知道:这是Valgrind还是boost :: thread的问题?或许我误解了什么?

你会怎么解释?

Dav*_*rtz -1

您的代码没有给清理机会发生。当您调用join线程时,它会等待线程发出完成信号,而不是实际释放其所有资源。如果您更慢地创建线程或在循环中添加延迟或让出,“泄漏”就会消失。