如何从 C++ Node.js 插件 read/write 数据到 ArrayBuffer?

How to read/write data to ArrayBuffer from C++ Node.js addon?

简而言之,我有一个插件可以完成一个生成 uint8_t 数组的操作。我需要将此数组及其内容转换为 ArrayBuffer 和 return。

相反,插件也可以接受 ArrayBuffer 作为输入,我需要将其连同其内容一起转换为 uint8_t 数组。

我找不到有关如何执行此操作的明确文档。我是 Node、v8、addons 等方面的新手。如果有人知道如何执行此操作并且可以帮助我,那就太好了。

您可能希望使用 Uint8Array 而不是 ArrayBuffer,但是...

要从现有内存块创建 ArrayBuffer

// given void* data
v8::Local<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(
    Isolate::GetCurrent(), data, byte_length, ArrayBufferCreationMode::kInternalized)

Docs are here. 最后一个参数控制当 ArrayBuffer 被 GC 时,内存块是否会被 v8 free。如果您使用 kInternalized,则内存必须可通过 free.

释放

要获取支持 ArrayBuffer 的内存,请使用 ab->GetContents(). That returns a Contents class 实例,它有一个 void* Data() 方法。

有关其他示例,请参阅 。