我希望使用缓冲区来存储稀疏索引。如果我分配一个大小为1024字节的缓冲区,并且有效地在其中存储了128字节,那么在内存中会分配多少字节?
答案是1024字节,因为缓冲区已经被分配了1024字节的内存空间,即使只存储了128字节,其余的空间也不能被其他程序使用。
我希望使用缓冲区来存储稀疏索引。如果我分配一个大小为1024字节的缓冲区,并且有效地在其中存储了128字节,那么在内存中会分配多少字节?
答案是1024字节,因为缓冲区已经被分配了1024字节的内存空间,即使只存储了128字节,其余的空间也不能被其他程序使用。
根据构造函数文档:
new Buffer(size)#
size
数字
分配一个大小为 size 字节的新缓冲区。在32位结构上,size 必须小于 1,073,741,824
字节(1 GB),在64位结构上必须小于 2,147,483,648
字节(2 GB),否则会抛出 RangeError
。
与 ArrayBuffer 不同,缓冲区的底层内存不会被初始化。因此,新创建的缓冲区的内容未知,可能包含敏感数据。使用 buf.fill(0)
将缓冲区初始化为零。
似乎整个内存都被分配了,但没有清零。