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);

输出

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

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