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

JavaScript is not allocating needed size for 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

因此,如果您的浏览器返回的是较小的缓冲区而不是抛出异常,则它是不合规的。