小编Shi*_*wal的帖子

为什么使用make_unique <>将函数传递给线程导致Valgrind中的内存泄漏?

我正在尝试这样做:

int main(){
    std::unique_ptr<std::thread> up(nullptr);
    up = std::make_unique<std::thread>(upload, url, path);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

其中,upload基本上是一个静态非成员函数,url并且pathstd::string.upload定义为:

static void upload(const string url, const string path){ int sync_status;}
Run Code Online (Sandbox Code Playgroud)

但在Valgrind下,这总是被报告为内存泄漏:

249 (80 direct, 169 indirect) bytes in 1 blocks are definitely lost in loss record 151 of 169
==12088==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==12088==    by 0x1395F9: _S_make_state<std::thread::_Invoker<std::tuple<void (*)(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >), std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> , std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> …
Run Code Online (Sandbox Code Playgroud)

c++ string multithreading c++14

0
推荐指数
1
解决办法
82
查看次数

标签 统计

c++ ×1

c++14 ×1

multithreading ×1

string ×1