当前位置: 首页 > 知识库问答 >
问题:

来自ArrayBuffer的缓冲区与内存副本

万俟鸿波
2023-03-14

我正在从节点切换。js 8。X到节点。js 10。x和我收到一些关于“新建缓冲区”的不推荐的警告

我有一个arrayBuffer,我需要复制到一个Buffer和我的第一个版本是这样的:

const newBuffer = Buffer.from(myArrayBuffer)

但在本例中,不会复制arrayBuffer(https://nodejs.org/api/buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length)因此,在某些情况下,当我在非同步代码中引用缓冲区时,我的数据被破坏

因此,我转而:

const newBuffer = new Buffer(Buffer.from(myArrayBuffer))

它可以工作,但我收到了节点的警告。js 10。十、

我做了这个,但不确定这是最好的方法

const newBuffer = Buffer.alloc(myArrayBuffer.byteLength)
const abView = Buffer.from(myArrayBuffer)
abView.copy(newBuffer)

共有1个答案

蔡弘扬
2023-03-14

为了安全起见,您可以使用普通的for循环进行逐字节复制:

var newBuffer = new Buffer.alloc(myArrayBuffer.byteLength)

for (var i = 0; i < myArrayBuffer.length; i++)
    newBuffer[i] = myArrayBuffer[i];

这样,您肯定要处理一个新对象,而不仅仅是ArrayBuffer上的视图。

 类似资料:
  • 我试图读取名为使用。JS代码: 但是运行代码会产生这个错误: 这个错误对我来说毫无意义。由返回的缓冲区怎么可能不是的实例?将替换为或也不能解决此问题。我目前正在使用节点。JS版本14.17.6(LTS)。

  • 我正在尝试为DMA Linux编写驱动程序,但我的驱动程序一直无法执行DMA_CONCENTER_alloc,我已经增加了CMA内存和CONCENTERY_pool。。。 我错过了什么? dmesg在物理CPU 0x0上引导Linux<br>Linux版本4.14.0-xilinx-v2018.2(oe-user@oe-host)(gcc版本7.2.0(gcc))#5 SMP抢占Sun二月17日2

  • 本文向大家介绍操作系统中缓冲与缓存之间的区别,包括了操作系统中缓冲与缓存之间的区别的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们将了解操作系统中缓冲和缓存之间的区别- 正在缓冲 它是主内存中的一个区域。 这意味着它与RAM(随机存取存储器)相关联。 缓冲区将数据的原始副本存储在内存中。 缓冲与发送方和接收方之间的数据流速度匹配。 快取 缓存将数据的原始副本存储在内存中。 缓存可以提高

  • 问题内容: 对我而言,尚不清楚两个Linux内存概念和之间有什么区别。 缓冲区的策略是先进先出 缓存的策略是“最近最少使用”。 我对吗? 特别是,我正在查看两个命令:和 问题答案: “缓冲区”表示RAM的多少部分专用于缓存磁盘块。“缓存”类似于“缓冲区”,只是这次它缓存文件读取中的页面。 引用自: https://web.archive.org/web/20110207101856/http://

  • 问题内容: 什么之间的区别,并和我为什么一定要同时调用? 该参考说: 此函数将发送输出缓冲区的内容(如果有)。 该参考说: 刷新PHP的写缓冲区以及PHP使用的任何后端PHP(CGI,Web服务器等)。 但是,它继续说: [它]可能无法覆盖Web服务器的缓冲方案… 因此,在我看来,我可以一直使用所有时间。但是,这样做会得到奇怪的结果。有人可以简单地解释一下这是怎么回事吗? 问题答案: 发送应用程序

  • 我目前从帧缓冲区获取深度图,但是值卡在0.0或1.0或更高。如何获得0.0到1.0之间的深度? 此外,我在片段着色器中以sampler2D的形式访问深度图。