首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据复制到v8::ArrayBuffer

将数据复制到v8::ArrayBuffer
EN

Stack Overflow用户
提问于 2016-09-30 16:39:24
回答 2查看 1.9K关注 0票数 4

我正在C++中使用v8编写Javascript解释器。我需要将一个char缓冲区传递到一个ArrayBuffer中,以便它能够被垃圾收集。这是我的代码:

代码语言:javascript
复制
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谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-03 08:27:43

找到了一个方法:

代码语言:javascript
复制
memcpy(ab->GetContents().Data(), data_buffer.data(), data_buffer.size());

现在,我不需要分配内存,所有东西都是垃圾收集的。

票数 4
EN

Stack Overflow用户

发布于 2016-10-01 08:28:31

buffer.html#a28e84424cddbe397f3ee3d920189bc04

代码语言:javascript
复制
Local< ArrayBuffer > v8::ArrayBuffer::New   (   Isolate *   isolate, size_t     byte_length)

创建一个新的ArrayBuffer。分配|byte_length|字节。分配的内存将由创建的ArrayBuffer拥有,并且在垃圾收集时将被释放,除非对象是外部化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39796251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档