• Buffer.allocUnsafe()


    Buffer.allocUnsafe(size)

    • size {Number}

    分配一个 size 字节大小的新的非零填充(non-zero-filled)的 Buffer。size 必须小于等于 require('buffer').kMaxLength(在64位架构上 kMaxLength 的大小是 (2^31)-1)的值,否则将抛出一个 RangeError 的错误。如果 size 小于 0 将创建一个特定的 0 长度(zero-length )的 Buffer。
    以这种方式创建的 Buffer 实例的底层内存是没被初始化过的。新创建的 Buffer 的内容是未知的,并可能包含敏感数据。通过使用 buf.fill(0) 将这个 Buffer 初始化为零。

    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>
    

    如果 size 不是一个数字则抛出一个 TypeError 错误。
    请注意,Buffer 模块预分配一个大小为 Buffer.poolSize 的内部 Buffer 实例作为一个快速分配池,仅当 size 小于等于 Buffer.poolSize >> 1 (浮点类型的 Buffer.poolSize 应该除以2)时,用于分配通过 Buffer.allocUnsafe(size) 创建的新的 Buffer 实例(和 new Buffer(size) 构造函数)。默认的 Buffer.poolSize 值为 8192 ,但可以被修改。+

    使用这个预分配的内部内存池是调用 Buffer.alloc(size, fill) 和 Buffer.allocUnsafe(size).fill(fill) 的关键不同之处。特别是,如果 size 小于或等于 Buffer.poolSize 的一半时,Buffer.allocUnsafe(size).fill(fill) 将使用内部的 Buffer 池,而 Buffer.alloc(size, fill) 将绝不会使用这个内部的 Buffer 池。在一个应用程序需要 Buffer.allocUnsafe(size) 提供额外的性能时,(了解)这个细微的不同之处是非常重要的。

  • 相关阅读:
    剑指Offer——翻转单词顺序列
    剑指Offer——左旋转字符串
    剑指Offer——和为S的两个数字
    剑指Offer——和为S的连续正数序列
    剑指Offer——数组中只出现一次的数字
    log4cxx入门第一篇--一个小例子
    gsoap写一个c++ webservice
    Protocol Buffer技术详解(数据编码)
    Protocol Buffer技术详解(Java实例)
    Protocol Buffer技术详解(C++实例)
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9908501.html
Copyright © 2020-2023  润新知