2016-09-30 29 views
2

我正在使用v8在C++中编写Javascript解释器。 我需要传递一个char缓冲区到一个ArrayBuffer中,以便它被垃圾收集。这里是我的代码:将数据复制到v8 :: 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

找到了一个方法:

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

现在我并不需要分配内存,一切都是垃圾收集。