静态方法:Buffer.alloc(size[, fill[, encoding]])


【Static method: Buffer.alloc(size[, fill[, encoding]])

分配一个新的 Buffer,大小为 size 字节。如果 fillundefinedBuffer 将会被填充为零。

【Allocates a new Buffer of size bytes. If fill is undefined, the Buffer will be zero-filled.】

import { Buffer } from 'node:buffer';

const buf = Buffer.alloc(5);

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

const buf = Buffer.alloc(5);

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

如果 size 大于 buffer.constants.MAX_LENGTH 或小于 0,将抛出 ERR_OUT_OF_RANGE

【If size is larger than buffer.constants.MAX_LENGTH or smaller than 0, ERR_OUT_OF_RANGE is thrown.】

如果指定了 fill,分配的 Buffer 将通过调用 buf.fill(fill) 进行初始化。

【If fill is specified, the allocated Buffer will be initialized by calling buf.fill(fill).】

import { Buffer } from 'node:buffer';

const buf = Buffer.alloc(5, 'a');

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

const buf = Buffer.alloc(5, 'a');

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

如果同时指定了 fillencoding,分配的 Buffer 将通过调用 buf.fill(fill, encoding) 来初始化。

【If both fill and encoding are specified, the allocated Buffer will be initialized by calling buf.fill(fill, encoding).】

import { Buffer } from 'node:buffer';

const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');

console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>const { Buffer } = require('node:buffer');

const buf = Buffer.alloc(11, 'aGVsbG8gd29ybGQ=', 'base64');

console.log(buf);
// Prints: <Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64>

调用 Buffer.alloc() 可能比替代方法 Buffer.allocUnsafe() 慢得多,但可以确保新创建的 Buffer 实例的内容永远不会包含之前分配的敏感数据,包括那些可能未为 Buffer 分配的数据。

【Calling Buffer.alloc() can be measurably slower than the alternative Buffer.allocUnsafe() but ensures that the newly created Buffer instance contents will never contain sensitive data from previous allocations, including data that might not have been allocated for Buffers.】

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

【A TypeError will be thrown if size is not a number.】