Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;boost线程,以下是合法的内存泄漏吗? #包括 #包括 #包括 类可调用{ 公众: void运算符()(){ std::cout_C++_Memory Leaks_Malloc_Boost Thread - Fatal编程技术网

C++ C++;boost线程,以下是合法的内存泄漏吗? #包括 #包括 #包括 类可调用{ 公众: void运算符()(){ std::cout

C++ C++;boost线程,以下是合法的内存泄漏吗? #包括 #包括 #包括 类可调用{ 公众: void运算符()(){ std::cout,c++,memory-leaks,malloc,boost-thread,C++,Memory Leaks,Malloc,Boost Thread,在32位C int类型的64位系统上,struct mallinfo中的int字段可能 溢出,或者环绕到小值或负值,或者希望在 这是一个已知的C库问题,而Devel::Mallinfo不尝试这样做 请查看以下链接: 我建议您使用POSIX或C标准接受的其他函数。此函数mallinfo不是POSIX或C标准指定的。我真的怀疑此函数。我建议将alloc设置为全局变量,并添加类似于cout@BobJarvis的代码。在这个代码示例中,如果您注释掉线程实例化n那么“泄漏”的内存是0。这似乎是一个线索。

在32位C int类型的64位系统上,struct mallinfo中的int字段可能 溢出,或者环绕到小值或负值,或者希望在 这是一个已知的C库问题,而Devel::Mallinfo不尝试这样做 请查看以下链接:


我建议您使用POSIX或C标准接受的其他函数。

此函数mallinfo不是POSIX或C标准指定的。我真的怀疑此函数。我建议将
alloc
设置为全局变量,并添加类似于
cout@BobJarvis的代码。在这个代码示例中,如果您注释掉线程实例化n那么“泄漏”的内存是0。这似乎是一个线索。
#include <iostream>
#include <boost/thread/thread.hpp>
#include <malloc.h>

class callable {
  public:
    void operator()() {
      std::cout << "Thread Run" << std::endl;
    }
}

void run() {
  callable c;
  boost::thread t(boost::ref(c));
  t.join();
}

int main() {
  int alloc = mallinfo().uordblks;
  run();
  int leaked = mallinfo().uordblks - alloc;
  if(leaked)
    std::cout << "mem leak: " << leaked << std::endl;
  return 0;
}