std::thread libstdc++-v3在哪里释放内存?



我正在阅读libstdc++-v3std::thread实现,我看到一个unique_ptr在线程创建后被释放,所以当它运行超出作用域时,新线程可能使用的内存不会被释放。(https://github.com/gcc-mirror/gcc/blob/6b1633378b74bed1d999a0ae2549088515a30ba0/libstdc%2B%2B-v3/src/c%2B%2B11/thread.cc # L152)。就我而言,稍后必须手动删除手动指针,但我找不到在哪里完成的。帮助吗?

Nvm,刚找到。https://github.com/gcc-mirror/gcc/blob/6b1633378b74bed1d999a0ae2549088515a30ba0/libstdc%2B%2B-v3/src/c%2B%2B11/thread.cc#L81它将void*转换为thread::_State*thread::_State_ptr(这是实际的std::unique_ptr)以使用RAII。这种代码风格在我看来有点难以读懂。我想过删除这个问题,但还是把它留在这里,以防有人感兴趣。

最新更新