posix timer_create()函数导致linux上的内存泄漏

时间:2010-11-09 15:33:09

标签: c++

我在我的应用程序中使用timer_create函数来实现计时器功能。 发生超时时,会创建一个新线程。那个时候我的应用程序的内存使用量增加了大约11mb。我还将线程属性设置为PTHREAD_CREATE_DETACHED。任何帮助表示赞赏。我还想知道在超时发生时创建的线程有多久会活着?

5 个答案:

答案 0 :(得分:1)

Valgrind是在Linux环境中查找内存泄漏的宝贵工具

答案 1 :(得分:1)

我怀疑它与你的计时器有什么关系。

如果创建新线程,则线程需要堆栈空间。

我知道这个内存在创建线程时会被分配一次,因为它必须是连续的。

这可能听起来像浪费了很多内存,但事实并非如此。首先,如果需要,可以降低堆栈大小,第二步:只分配进程内的地址空间。只有在使用堆栈时才会分配物理内存。

答案 2 :(得分:0)

没有代码,这个问题毫无意义。

timer_create不会自己创建一个线程。你的代码必须是线程。

您的内存泄漏几乎肯定是由代码中的错误引起的。由于我们无法看到您的代码,我们无法帮助解决问题。

答案 3 :(得分:0)

任何线程都保持“活动”,直到退出其线程函数。你的泄漏很可能是线程的堆栈 - 在调用thread_join或其他类似的东西之前,它不会消失。

答案 4 :(得分:0)

提供的信息太少,但可能有帮助:
Periodic Timer Overrun and Resource Allocation