uv_timer_t的释放问题

项目中的计时器模块是用libuv做的,今天发现了点问题,是释放uv_timer_t引起了,我是在uv_timer_start的回调里释放该结构的,这里是不能释放了,因为回调完后,库还会使用uv_timer_t里的数据,之前没出问题,是恰好这个内存还没有被使用,其数据还没被破坏。正确的释放时机,是再调用uv_close,在close的回调里释放它。我猜想uv_handle_t族安全释放的时机应该都是uv_close里,还需阅读源码确认。


ps:上文不对,timer的回调里可以释放uv_timer_t的内存,不影响任何使用,只是会造成uv_loop_t::handle_queue里有一个指针的泄露,因为uv_timer_t是uv_handle_t族,uv_handle_t在init时会被加入uv_loop_t::handle_queue,只有手动调用uv_close才会从哪里删除。

posted @ 2016-08-04 23:44  watercold  阅读(1607)  评论(0编辑  收藏  举报