2015-04-01 49 views
0

我正在学习使用带链接列表的堆栈的优点和缺点,当我发现一个缺点时说:“每个节点的内存成本可能远远超过存储的数据库的成本。比如整数可以是比整数本身大7倍的内存开销。“每个节点的内存开销

这是什么意思?

+0

看到我编辑的答案。 – CiaPan 2015-04-06 20:09:30

回答

2

当你使用一个普通的内存分配器时,你不知道它在每个请求上分配了多大的块。他们中的许多人将请求的数据量调整到某个偶数,这样每个数据块的地址就可以被整除,例如8或16,甚至32。只请求1个字节。然后你会得到32个字节的堆为4个字节的数据块,这是8倍,你真正需要的,因此开销等于7

编辑

通常情况下,分配增加了一个“头'在它返回的块之前,并且头部大小是分配大小步骤。对于长度为16个字节的标题,您的请求分配大小将四舍五入到最接近的16位乘法,并为标头递增16。因此,对于请求的大小1到16,您使用32个字节,对于17-32,使用48,对于33-48,使用48,等等。