0

如果通过以下方式安排了一次性计时器

schedule_timer(timer,0,ACE_Time_Value(delay),ACE_Time_Value::zero)

是否需要 cancel_timer 以避免内存泄漏?

4

2 回答 2

1

我认为答案是“视情况而定”。除了相对古老的 ACE 版本,您可以让 Reactor(或 Timer_Queue)增加事件处理程序的引用计数,并在事件处理程序从 Reactor(或 Timer_Queue)中删除时减少它。请注意,引用计数是可选,必须启用。

另外,这玩意我没用过,看文档测试!

于 2009-04-02T16:28:14.890 回答
0

定时器对象不会被ACE释放,但是ACE需要维护定时器的任何数据结构都会在定时器运行后被释放。

两种验证方式:

  • 阅读ACE源代码(不好玩)
  • 在valgrind下运行一个小测试程序
于 2009-04-02T12:16:55.513 回答