JavaScript没有为ArrayBuffer分配所需的大小

我试图运行以下代码来分配ArrayBuffer:

var data = new ArrayBuffer(336000000);
console.log(data.byteLength); // outputs 125829120

有谁知道为什么不分配字节数呢? Chrome不会给我任何错误/警告.

并非在每个平台上都会出现此问题,但在Galaxy S6(Android浏览器)上会出现多个问题

解决方法:

您正在尝试分配比可用内存更多的内存.但是,根据规范,这应该引发异常,而不是返回较小的缓冲区:

http://www.ecma-international.org/ecma-262/6.0/#sec-createbytedatablock

Let db be a new Data Block value consisting of size bytes. If it is impossible to create such a Data Block, throw a RangeError exception.

和以前的规格https://www.khronos.org/registry/typedarray/specs/latest/#5

If the requested number of bytes could not be allocated an exception is raised

因此,如果您的浏览器返回的缓冲区较小而不是引发异常,则它不符合要求.

上一篇:某SQL注入--报错注入payload


下一篇:Typescript 学习笔记3 —— 任意值