拷贝数据到v8::ArrayBuffer

Copy data into v8::ArrayBuffer

本文关键字:ArrayBuffer v8 数据 拷贝      更新时间:2023-10-16

我正在用v8用c++写一个Javascript解释器。我需要将一个字符缓冲区传递给ArrayBuffer,以便它被垃圾收集。下面是我的代码:

QByteArray data_buffer(file.readAll().data(), file.size());
v8::Handle<v8::ArrayBuffer> ab = v8::ArrayBuffer::New(args.GetIsolate(), data_buffer.size());
//insert code to copy data from data_buffer to ab
args.GetReturnValue().Set(ab);

如果我使用文档中的构造函数传递指向数据的指针,我将不得不自己处理内存,我不希望这样。

我想避免分配内存,让v8做它自己的内存管理。无法找到使用Set()或任何其他函数的方法。

关于如何复制数据到arraybuffer有什么建议吗?或者我如何使用2参数构造函数让v8处理我的数据使用的内存?

文档在这里:http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.html谢谢。

找到方法:

memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());

现在我不需要分配内存,所有东西都被垃圾收集。

http://v8.paulfryzel.com/docs/master/classv8_1_1_array_buffer.html#a28e84424cddbe397f3ee3d920189bc04

Local< ArrayBuffer > v8::ArrayBuffer::New   (   Isolate *   isolate, size_t     byte_length)

创建一个新的ArrayBuffer。分配|byte_length| bytes。分配内存将由创建的ArrayBuffer拥有,并将被释放当它被垃圾收集时,除非对象被外部化。