以下是我的程序代码段。我还没有返回完整的代码,但代码工作正常。
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)