拷贝数据到v8::ArrayBuffer
Copy data into v8::ArrayBuffer
我正在用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拥有,并将被释放当它被垃圾收集时,除非对象被外部化。
相关文章:
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 在 G++ v8.2.0 中使用 std::experimental::可选
- 如何为 v8::P ersistent<v8::Function> 创建到 c++ 函数的包装器
- v8::HandleScope::CreateHandle() # 中的致命错误无法在没有 HandleScope 的情
- 如何将节点 V8 字符串转换为 C++ 字符串
- 在 C++ 中嵌入 V8 会导致与 libcpp 相关的"unrecognized external symbol"错误
- 当我使用 V8 库中的 GetInternalField() 时出现分段错误
- 在 v8 JavaScript 中重复调用C++是否有巨大的开销?
- 我可以使用谷歌 v8 在回调函数中获取 JavaScript 函数C++源文本吗?
- 与纯 V8 相比,NodeJS 是否有任何性能缺陷或显著开销?
- V8垃圾收集器回调,用于测量GC活动
- 如何在 C++ 中从 V8 调用 Javascript 函数
- 如何将 v8::FunctionCallbackInfo<v8::Value> 数组从一个隔离复制到另一个隔离?
- 使用导入的函数从嵌入式v8调用webassembly
- v8 源代码中 ArrayMap 函数的回调 fn 参数是什么?
- 如何在 v8 Javascript 中的多个函数中使用相同的上下文?
- 如何使用 v8 本机插件将 C++ 数组交付到 Node.js
- 存储/传递 v8 承诺解析器供以后使用的最佳实践?(结合C++线程)
- v8 不再支持 v8::Value::ToNumber 了吗?
- 拷贝数据到v8::ArrayBuffer