安全说明
🌐 Safety notes
node:ffi 模块不跟踪指针有效性、内存所有权或本地对象的生命周期。
🌐 The node:ffi module does not track pointer validity, memory ownership, or
native object lifetimes.
特别是:
🌐 In particular:
- 不要从已释放的内存中读取或向其写入。
- 在本地内存被释放后,不要使用零拷贝视图。
- 不要为本地符号声明错误的签名。
- 在本地代码可能仍会调用回调时,不要取消注册回调。
- 在
library.close()或library.unregisterCallback(pointer)之后不要调用回调指针。 - 假设未定义的回调行为可能会导致进程崩溃、产生错误的输出或破坏内存。
- 不要假设指针返回值意味着所有权;调用者是否必须释放返回的地址完全取决于本地 API。
一般来说,除非需要零拷贝访问,否则应优先使用复制的值,并在本地端显式保持回调和指针的生命周期。
🌐 As a general rule, prefer copied values unless zero-copy access is required, and keep callback and pointer lifetimes explicit on the native side.