我试图运行以下代码来分配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
因此,如果您的浏览器返回的缓冲区较小而不是引发异常,则它不符合要求.