一种理想状态下的内存管理

看到CSDN上有人提问,我就把自己的想法写下了。


对于大项目,(尤其是频繁内存操作的高性能项目),系统的内存管理功能不那么好使的。当然,对于一些自带内存管理功能的语言来说,在一定程度上,另当别论。

对于你所说的情况,建议在系统启动时候,分配足够多的内存,然后自己管理。最简单的情况,当然是假设你的链表中,每个节点,内存大小需求一致了。

对于这种理想情况,我给出一种方法:
写一个内存管理类,
  类中有几个关键变量:start(内存起始),end(内存结束),这两个变量在系统初始化时候向OS申请的大内存决定。那么既然每个节点大小一样,就可以把这段内存想象成N个节点的一个连续表。这个表中有两类块,一类是已经被用得,另一类是当前可用的。
  此外,你得迅速找到当前可用的块的位置。
  我有一种像法师这样的:在这个类里有两个链表,一个当前可用链表,里面有当前可用的所有节点,一个当前正在使用链表,里面挂着所有当前已经被使用的节点。在初始化时候,当前可用节点,里面顺序存着从start到end的每一个块。
  分配算法,从当前可用链表中摘一个节点,挂入当前正在使用链表。然后你程序获得这个节点之后,就获得了,对应地址的内存指针。
  释放算法,清零该节点内存,然后将其挂入当前可用链表里。

  分配复杂度O(1)。对于释放,性能也可以提高。可以在类分配节点中给出信息节点首地址。那么当你需要释放的时候,你就立刻可以知道,当前你要摘除的节点的位置。


详细的随后我做实验再说啦。现在先这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值