将数据复制到 v8::ArrayBuffer
Copy data into v8::ArrayBuffer
我正在使用 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() 或任何其他函数的方法。
关于如何将数据复制到数组缓冲区有什么建议吗?或者我如何使用 2 参数构造函数让 v8 处理我的数据使用的内存?
文档在这里:http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.html谢谢。
http://v8.paulfryzel.com/docs/master/classv8_1_1_array_buffer.html#a28e84424cddbe397f3ee3d920189bc04
Local< ArrayBuffer > v8::ArrayBuffer::New ( Isolate * isolate, size_t byte_length)
Create a new ArrayBuffer. Allocate |byte_length| bytes. Allocated
memory will be owned by a created ArrayBuffer and will be deallocated
when it is garbage-collected, unless the object is externalized.
找到方法:
memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());
现在我不需要分配内存,一切都被垃圾收集了。
我正在使用 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() 或任何其他函数的方法。
关于如何将数据复制到数组缓冲区有什么建议吗?或者我如何使用 2 参数构造函数让 v8 处理我的数据使用的内存?
文档在这里:http://bespin.cz/~ondras/html/classv8_1_1ArrayBuffer.html谢谢。
http://v8.paulfryzel.com/docs/master/classv8_1_1_array_buffer.html#a28e84424cddbe397f3ee3d920189bc04
Local< ArrayBuffer > v8::ArrayBuffer::New ( Isolate * isolate, size_t byte_length)
Create a new ArrayBuffer. Allocate |byte_length| bytes. Allocated memory will be owned by a created ArrayBuffer and will be deallocated when it is garbage-collected, unless the object is externalized.
找到方法:
memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());
现在我不需要分配内存,一切都被垃圾收集了。