我哪里使用错误?还是valgrind有问题?请指定,谢谢!
valgrind 没有用过,看起来未释放的是pthread tls内存。
楼主可以试试建立一个只包含空的main函数的程序,然后用valgrind检查看看。 问题出现在
SetTimer(void (*)(sigval), void*&, int, int) (main.cpp:38)
main (main.cpp:55)
代码中
SetTimer(pfun,tid1,13,1);
typedef void(*pFun)(sigval_t);不可能释放的,原因可能是这样的:
se.sigev_notify = SIGEV_THREAD;
se.sigev_notify_function = pfun;
会让系统启动一个线程,当定时器时间到了之后,就会在这个线程里调用pfun,而这个线程启动之后是不会停止的。
要不你改为
se.sigev_notify = SIGEV_NONE;
或者
se.sigev_notify = SIGEV_SIGNAL;
试试。