我正在C++中使用v8编写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()或任何其他函数的方法。
对于如何将数据复制到数组缓冲区,有什么建议吗?或者如何使用2参数构造函数让v8处理数据使用的内存?
这里的文档:1ArrayBuffer.html谢谢。
发布于 2016-10-03 08:27:43
找到了一个方法:
memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());现在,我不需要分配内存,所有东西都是垃圾收集的。
发布于 2016-10-01 08:28:31
buffer.html#a28e84424cddbe397f3ee3d920189bc04
Local< ArrayBuffer > v8::ArrayBuffer::New ( Isolate * isolate, size_t byte_length)创建一个新的ArrayBuffer。分配|byte_length|字节。分配的内存将由创建的ArrayBuffer拥有,并且在垃圾收集时将被释放,除非对象是外部化的。
https://stackoverflow.com/questions/39796251
复制相似问题