我正在使用v8在C ++中编写Javascript解释器。 我需要将一个char缓冲区传递给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谢谢。
答案 0 :(得分:1)
找到方法:
memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());
现在我不需要分配内存,所有内容都是垃圾回收。
答案 1 :(得分:0)
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 |字节。分配 内存将由创建的ArrayBuffer拥有并将被释放 当它被垃圾收集时,除非对象被外部化。