这是节点或预期行为的错误吗?0.12.7可在和中重现io 3.1.0:
> new Buffer(5)
<Buffer 00 00 02 00 00>
> new Buffer(5)
<Buffer 00 00 00 00 00>
> new Buffer(5)
<Buffer 28 94 00 02 01>
> new Buffer(5)
<Buffer 00 00 00 02 00>
> new Buffer(5)
<Buffer 00 00 00 00 00>
> new Buffer(5)
<Buffer 00 98 94 00 02>
Run Code Online (Sandbox Code Playgroud)
情况几乎一直如此。将内存归零会增加开销,因此当您创建新的缓冲区时,您会看到该内存块最后包含的内容。
如果您需要/想要将缓冲区清零,只需执行buffer.fill(0);
更新:
在节点 v6.0.0 中,缓冲区创建 API发生了变化。您现在可以直接分配一个零填充的 viaBuffer.alloc(size)并通过 获取旧行为Buffer.allocUnsafe(size)。这些新BufferAPI 也已在 v4.5.0 中向后移植到 v4.x。Buffer 创建的-stylenew Buffer()现在被认为已弃用,并将在未来的主要版本中删除(如果我不得不猜测的话,最早可能是 v8.0.0,以允许硬弃用周期)。
此外,从节点 v5.10.0(以及 v4.x 分支的 v4.5.0)开始,您可以将参数传递--zero-fill-buffers给节点二进制文件,该二进制文件将在创建时默默地自动将所有缓冲区填充为零。
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |