ACE (C++):没有调用cancel_timer == MLK?

发布于 2024-07-16 09:56:45 字数 141 浏览 8 评论 0原文

如果通过cancel_timer安排一次性计时器

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

以避免内存泄漏?

If a one-shot timer was scheduled via

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

is cancel_timer required in order to avoid a memory leak?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

关于从前 2024-07-23 09:56:45

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

另外,这个东西我没用过,看文档并测试一下!

I think the answer is "it depends". With anything but relative ancient versions of ACE, you can have the Reactor (or Timer_Queue) increase the reference count on your event handler, and decrement it when the event handler is removed from the Reactor (or Timer_Queue.)
Please notice that reference counting is optional, and has to be enabled.

In addition, I have not used this stuff, read the documentation and test!

时间海 2024-07-23 09:56:45

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

有两种方法可以验证这一点:

  • 阅读 ACE 源代码(不好玩)
  • valgrind 下运行一个小测试程序

The timer object will not be released by ACE, but any data structure needed by ACE to maintain the timer will be released after the timer is run.

Two ways to verify this:

  • Read the ACE source code (not fun)
  • Run a small test program under valgrind
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文