关于 NodeJS 缓冲区

About NodeJS Buffers

关于缓冲区的问题。 如果我有这个本机代码:

unsigned char* data = static_cast<unsigned char*>(malloc(sizeof(int) * 4));
Napi::Buffer<unsigned char> buffer = Napi::Buffer::New(info.Env(), data, sizeof(int) * 4); // create buffer

return buffer;

它会return缓冲区到js,GC是否处理malloc的数据?或者它会导致泄漏,因为我没有释放它。我在这里问这个的原因是因为我正在处理 js 缓冲区

看来您应该使用其他重载手动释放它

https://github.com/nodejs/node-addon-api/blob/master/doc/buffer.md#new-2

The Napi::Buffer object does not assume ownership for the data and expects it to be valid for the lifetime of the object. The data can only be freed once the finalizeCallback is invoked to indicate that the Napi::Buffer has been released.

template <typename Finalizer>
static Napi::Buffer<T> Napi::Buffer::New(napi_env env
   T* data,
   size_t length,
   Finalizer finalizeCallback);

注意:我以前没有使用过 NAPI,但我认为它是正确的文档。