使用零初始化Javascript的ArrayBuffer

3

有没有一种方法可以将ArrayBuffer中的所有索引设置为0,并且是经过优化以提高速度的?我知道我可以手动进行迭代来完成它,但我想知道是否有一些内置方法可以快速地完成。因为我希望每一帧只需要执行一次。


为什么不直接创建一个新的?所有内容在创建时都被初始化为零。 - Patrick Evans
1个回答

5
ArrayBuffer中没有必要将内存初始化为0,因为在创建数组时会自动执行此操作:

来自MDN:

返回值

指定大小的新ArrayBuffer对象。其内容已初始化为0。

这个默认设置可以追溯到过时的初始规范,并且所有浏览器都应该以这种方式运行。

此外,理所当然的是,在分配内存时必须清除内存,否则攻击者可能能够访问某些内存。

对于其他所有目的:

如果您需要将其初始化为其他值而不是0或清除现有数据,则可以使用本机的fill方法,该方法可用于ArrayBuffer的类型化数组视图(例如Uint8Array)。浏览器支持并不是很好,因此您可能需要为旧浏览器加载一个polyfill。

实际上,填充操作一直存在于我的脑海中,并且最近我使用它来将一块数据初始化为0。我想知道,在操作运行时间方面,请求一个新的1000000字节的ArrayBuffer块与将其初始化为0相比如何。 - Alex Bollbach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接