【问题标题】:Copy data into v8::ArrayBuffer将数据复制到 v8::ArrayBuffer
【发布时间】:2017-02-09 07:28:08
【问题描述】:

我正在使用 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 谢谢。

【问题讨论】:

    标签: javascript c++ qt v8 arraybuffer


    【解决方案1】:

    找到了一条路:

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

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

    【讨论】:

      【解决方案2】:

      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 拥有,并将被释放 当它被垃圾回收时,除非对象被外部化。

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 2020-08-13
        • 1970-01-01
        • 2017-01-30
        • 2018-10-07
        • 1970-01-01
        • 2015-02-09
        • 1970-01-01
        • 2016-07-16
        相关资源
        最近更新 更多