完成 uv_async_t
后,我应该销毁它以避免任何泄漏,对吧?从文档来看,我似乎应该使用 uv_close()
来实现此目的,但它需要 uv_handle_t*
,而不是 uv_async_t*
.此外,看起来强制转换它(如 uv_close((uv_handle_t *)async, NULL)
)会导致严格的别名冲突。这是我应该做的吗?
最佳答案
是的,您必须将 uv_async_t*
转换为 uv_handle_t*
。这就是 libuv 内部的工作原理。
所有句柄共享基本结构,因此 IIRC 严格的别名规则不会被破坏,因为这相当于将其强制转换为结构的第一个成员。
关于对 uv_close
的示例调用的注释:您只能在 close 回调中释放句柄的内存,而不能在之前,因此如果您传递 NULL 并且该句柄已分配在堆上不知道什么时候可以释放内存。
关于node.js - (如何)我应该销毁 uv_async_t 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38833227/