我在我的应用程序中使用timer_create函数来实现计时器功能。 发生超时时,会创建一个新线程。那个时候我的应用程序的内存使用量增加了大约11mb。我还将线程属性设置为PTHREAD_CREATE_DETACHED。任何帮助表示赞赏。我还想知道在超时发生时创建的线程有多久会活着?
答案 0 :(得分:1)
Valgrind是在Linux环境中查找内存泄漏的宝贵工具
答案 1 :(得分:1)
我怀疑它与你的计时器有什么关系。
如果创建新线程,则线程需要堆栈空间。
我知道这个内存在创建线程时会被分配一次,因为它必须是连续的。
这可能听起来像浪费了很多内存,但事实并非如此。首先,如果需要,可以降低堆栈大小,第二步:只分配进程内的地址空间。只有在使用堆栈时才会分配物理内存。
答案 2 :(得分:0)
没有代码,这个问题毫无意义。
timer_create不会自己创建一个线程。你的代码必须是线程。
您的内存泄漏几乎肯定是由代码中的错误引起的。由于我们无法看到您的代码,我们无法帮助解决问题。
答案 3 :(得分:0)
任何线程都保持“活动”,直到退出其线程函数。你的泄漏很可能是线程的堆栈 - 在调用thread_join或其他类似的东西之前,它不会消失。
答案 4 :(得分:0)
提供的信息太少,但可能有帮助:
Periodic Timer Overrun and Resource Allocation