• Node.js Video Tutorials

Node.js - Buffer.allocUnsafe() 方法



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

使用 buffer.allocUnsafe() 创建的缓冲区,分配的内存未初始化,其内容未知,即可能包含旧缓冲区的内容。也有可能包含敏感数据。出于安全考虑,最好使用 Buffer.alloc()。可以使用 Buffer.fill() 方法消除缓冲区中的旧数据。

语法

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

Buffer.allocUnsafe(size)

参数

此方法接受一个参数。下面解释了该参数。

  • size - 此参数为整数值,表示要创建的缓冲区的长度。

返回值

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

示例

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

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

输出

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

<Buffer ff ff ff ff 39>

示例

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

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

输出

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

<Buffer 61 61 61 61 61>

示例

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

const buf = Buffer.allocUnsafe('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.allocUnsafe (buffer.js:284: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
广告