allocUnsafe
Allocates a new Buffer
of size
bytes. If size
is larger than {@link constants.MAX_LENGTH} or smaller than 0, ERR_OUT_OF_RANGE
is thrown.
The underlying memory for Buffer
instances created in this way is not initialized. The contents of the newly created Buffer
are unknown and may contain sensitive data. Use Buffer.alloc()
instead to initializeBuffer
instances with zeroes.
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>
A TypeError
will be thrown if size
is not a number.
The Buffer
module pre-allocates an internal Buffer
instance of size Buffer.poolSize
that is used as a pool for the fast allocation of new Buffer
instances created using Buffer.allocUnsafe()
, Buffer.from(array)
, and Buffer.concat()
only when size
is less than Buffer.poolSize >>> 1
(floor of Buffer.poolSize
divided by two).
Use of this pre-allocated internal memory pool is a key difference between calling Buffer.alloc(size, fill)
vs. Buffer.allocUnsafe(size).fill(fill)
. Specifically, Buffer.alloc(size, fill)
will never use the internal Buffer
pool, while Buffer.allocUnsafe(size).fill(fill)
will use the internalBuffer
pool if size
is less than or equal to half Buffer.poolSize
. The difference is subtle but can be important when an application requires the additional performance that Buffer.allocUnsafe()
provides.
Since
v5.10.0
Parameters
The desired length of the new Buffer
.