當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。