• Node.js Video Tutorials

Node.js - Buffer.allocUnsafeSlow() 方法



NodeJS 的 Buffer.allocUnsafe() 方法用于创建一个指定大小的新缓冲区。如果指定的大小大于 buffer.constants.MAX_LENGTH 或小于 0,则会抛出 ERR_INVALID_ARG_VALUE 类型的错误。如果指定的大小不是数字,则会抛出 TypeError。

使用 buffer.allocUnsafeSlow() 创建的缓冲区,其分配的内存未初始化,内容未知,即可能包含旧缓冲区的内容。它也可能包含敏感数据。可以使用 Buffer.fill(0) 用 0 预填充缓冲区。

语法

以下是 NodeJS Buffer.allocUnsafeSlow() 方法 的语法:

Buffer.allocUnsafeSlow(size)

参数

此方法接受一个参数。解释如下。

  • size − 这是一个整数值,表示要创建的缓冲区的长度。

返回值

Buffer.allocUnsafeSlow() 方法将返回一个指定大小的新缓冲区。

示例

此示例将使用 NodeJS Buffer.allocUnsafeSlow() 方法创建一个缓冲区:

const buf = Buffer.allocUnsafeSlow(5);
console.log(buf);

输出

缓冲区大小为 5。执行上述程序,将生成以下输出:

<Buffer 00 00 00 00 00>

示例

此示例将使用 Buffer.allocUnsafeSlow() 方法创建缓冲区,并使用 Buffer.fill() 方法填充缓冲区的值。

const buf = Buffer.allocUnsafeSlow(5);
buf.fill('a')
console.log(buf);

输出

缓冲区大小为 5,我们已使用值 'a' 填充了缓冲区的内容。执行上述程序,将生成以下输出:

<Buffer 61 61 61 61 61>

示例

在此示例中,我们将看到如果使用的大小不是数字将会抛出什么错误。

const buf = Buffer.allocUnsafeSlow('5');
buf.fill('a')
console.log(buf);

输出

由于使用的大小是字符串,这是一个无效的值,因为大小必须是整数值。执行上述程序时,将抛出如下所示的错误。执行上述程序,将生成以下输出:

TypeError [ERR_INVALID_ARG_TYPE]: The "size" argument must be of type number. Received type string
   at Function.allocUnsafeSlow (buffer.js:294:3)
   at Object.<anonymous> (C:\nodejsProject\src\testbuffer.js:1:20)
   at Module._compile (internal/modules/cjs/loader.js:816:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
   at Module.load (internal/modules/cjs/loader.js:685:32)
   at Function.Module._load (internal/modules/cjs/loader.js:620:12)
   at Function.Module.runMain (internal/modules/cjs/loader.js:877:12)
   at internal/main/run_main_module.js:21:11
nodejs_buffer_module.htm
广告