当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js Buffer.allocUnsafe(size)用法及代码示例


静态方法:Buffer.allocUnsafe(size)

历史
版本变化
v15.0.0

对于无效的输入参数,抛出 ERR_INVALID_ARG_VALUE 而不是 ERR_INVALID_OPT_VALUE。

v7.0.0

传递否定的 size 现在将引发错误。

v5.10.0

添加于:v5.10.0


参数

分配 size 字节的新 Buffer。如果size大于 buffer.constants.MAX_LENGTH 或小于0,则抛出 ERR_INVALID_ARG_VALUE

以这种方式创建的Buffer 实例的底层内存未初始化。新创建的Buffer 的内容未知,可能包含敏感数据。改用 Buffer.alloc() Buffer 实例初始化为零。

import { Buffer } from 'node:buffer';

const buf = Buffer.allocUnsafe(10);

console.log(buf);
// Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>

buf.fill(0);

console.log(buf);
// Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>const { Buffer } = require('node:buffer');

const buf = Buffer.allocUnsafe(10);

console.log(buf);
// Prints (contents may vary): <Buffer a0 8b 28 3f 01 00 00 00 50 32>

buf.fill(0);

console.log(buf);
// Prints: <Buffer 00 00 00 00 00 00 00 00 00 00>

如果 size 不是数字,则会抛出 TypeError

Buffer 模块预先分配一个大小为 Buffer.poolSize 的内部 Buffer 实例,用作快速分配使用 Buffer.allocUnsafe() Buffer.from(array) Buffer.concat() 创建的新 Buffer 实例的池,并且仅当 size 小于或等于 Buffer.poolSize >> 1( Buffer.poolSize 的下限除以 2)时才使用已弃用的 new Buffer(size) 构造函数。

使用此预先分配的内部内存池是调用 Buffer.alloc(size, fill)Buffer.allocUnsafe(size).fill(fill) 之间的关键区别。具体来说,Buffer.alloc(size, fill) 永远不会使用内部 Buffer 池,而如果 size 小于或等于 Buffer.poolSize 的一半,Buffer.allocUnsafe(size).fill(fill) 将使用内部 Buffer 池。差异很细微,但在应用程序需要 Buffer.allocUnsafe() 提供的额外性能时可能很重要。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 Buffer.allocUnsafe(size)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。