暂停的替代方案,以避免内存泄漏

时间:2015-08-12 18:03:30

标签: c++ memory-leaks signals valgrind

以下是我的程序代码段。我还没有返回完整的代码,但代码工作正常。

class Sig 
{
 public:
 pthread_t tid;
 Sig()
 {
  pthread_create(&tid,NULL,signal_function,NULL);
 }

 ~Sig()
 {
   int r = pthread_detach(tid);
   if ( r !=0 ) {
    assert(0);
   }
 }

}

void signal_function(void *arg0)
{
  for (; ;) {
  // Wait until signal handler called. 
  int ret = pause();
  // Signal came do some work and return
  }
}

int main()
{ 
   Sig sig;
   return 0;
}

Valgrind将此显示为明确的泄漏,我认为问题是我的程序退出而没有发送信号暂停不释放资源。

当程序退出时,是否可以暂停将其返回的位置?或任何其他解决方案或您在上述程序中看到任何错误。

Valgrind泄漏

==12599== 352 bytes in 1 blocks are definitely lost in loss record 169 of 315
==12599==    at 0x4C27F94: calloc (vg_replace_malloc.c:279)
==12599==    by 0x401128E: _dl_allocate_tls (in /lib64/ld-2.3.4.so)
==12599==    by 0x76284ED: pthread_create@@GLIBC_2.2.5 (in /lib64/tls/libpthr
ead-2.3.4.so)
==12599==    by 0xA69082: Sig::Sig() (sim_main.cc:18)
==12599==    by 0xA6B1A5: main (sim_main.cc:34)

0 个答案:

没有答案