Class Method: Buffer.allocUnsafe(size)
-
size
<Number>
Allocates a new non-zero-filled Buffer
of size
bytes. The size
must be less than or equal to the value of require('buffer').kMaxLength
(on 64-bit architectures, kMaxLength
is (2^31)-1
). Otherwise, a RangeError
is thrown. If a size
less than 0 is specified, a zero-length Buffer
will be created.
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 buf.fill(0)
to initialize such Buffer
instances to zeroes.
const buf = Buffer.allocUnsafe(5); console.log(buf); // <Buffer 78 e0 82 02 01> // (octets will be different, every time) buf.fill(0); console.log(buf); // <Buffer 00 00 00 00 00>
A TypeError
will be thrown if size
is not a number.
Note that 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(size)
(and the new Buffer(size)
constructor) only when size
is less than or equal to Buffer.poolSize >> 1
(floor of Buffer.poolSize
divided by two). The default value of Buffer.poolSize
is 8192
but can be modified.
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 internal Buffer 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(size)
provides.
Please login to continue.