Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js (如何)我应该销毁uv\u async\t?_Node.js_Strict Aliasing_Libuv - Fatal编程技术网

Node.js (如何)我应该销毁uv\u async\t?

Node.js (如何)我应该销毁uv\u async\t?,node.js,strict-aliasing,libuv,Node.js,Strict Aliasing,Libuv,在我处理完一个uv\u async\u t之后,我应该销毁它以避免任何泄漏,对吗?通过浏览文档,似乎我应该使用uv\u close(),但它需要uv\u句柄*,而不是uv\u异步*。此外,将其强制转换(如uv\u close((uv\u handle\u t*)async,NULL))会导致严格的别名冲突。这就是我应该做的吗?是的,您必须将uv\u async\u t*转换为uv\u handle\u t*。这就是libuv内部的工作原理 所有句柄共享基本结构,因此IIRC严格的别名规则不会被破

在我处理完一个
uv\u async\u t
之后,我应该销毁它以避免任何泄漏,对吗?通过浏览文档,似乎我应该使用
uv\u close()
,但它需要
uv\u句柄*
,而不是
uv\u异步*
。此外,将其强制转换(如
uv\u close((uv\u handle\u t*)async,NULL)
)会导致严格的别名冲突。这就是我应该做的吗?

是的,您必须将
uv\u async\u t*
转换为
uv\u handle\u t*
。这就是libuv内部的工作原理

所有句柄共享基本结构,因此IIRC严格的别名规则不会被破坏,因为这相当于将其强制转换为结构的第一个成员


关于您对
uv\u close
的示例调用的一点说明:您只能在close回调中释放句柄的内存,而不能在之前释放,因此如果您传递NULL并且句柄在堆上分配,您将不知道何时可以释放内存。

不幸的是
uv\u async\u t
没有
uv\u句柄作为其第一个成员;相反,它是。但是是的,看起来这就是我应该做的。感谢您提供有关
uv\u close()
回调的提示!