关于堆数据结构的设计问题:

duiduiblues 2002-09-27 02:01:13
我想实现一个堆管理器,此管理器对外提供一定的接口函数,其他模块调用,用来申请内存。我现在比较困惑的是堆内存内部的管理方式:比如说,一个字符串变量在堆上申请到了一定的空间,当对其进行追加操作时,若最初分配的空间不够,则需要另外分配足够大小的区间,然后将原有的内容拷贝过来,再进行追加,再将原来的区域释放。在这个问题里,需要考虑的问题有:
为一个变量最初分配的区间为多大?才能够尽量减少重新分配的次数,同时又不浪费空间;
当若干操作过后,会出现内存碎片,如何回收比较合理?
为回收内存碎片,则可能会进行内存中的数据移动,则何时进行这样的移动比较合适?
...全文
29 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
duiduiblues 2002-10-08
  • 打赏
  • 举报
回复
up
duiduiblues 2002-09-27
  • 打赏
  • 举报
回复
再加400分,在线悬赏好思路。
duiduiblues 2002-09-27
  • 打赏
  • 举报
回复
to wuxuan(真心英雄) : 怎样作这个内存整理呢?有没有什么已知的算法?

谁了解java虚拟机的gc的原理?据说它回收内存有30多种算法,我这里不需要进行废弃内存预测,应该简单的多。

我正在做一种类似于java的解释性语言,拥有自己的运行时环境,因此,不依赖于操作系统提供的机制。何况,操作系统提供的机制对于苛刻的要求也是满足不了的。例如:oracle等大型数据库程序、apache也有自己的内存池。
ypos 2002-09-27
  • 打赏
  • 举报
回复
为回收内存碎片,则可能会进行内存中的数据移动
xzzhq 2002-09-27
  • 打赏
  • 举报
回复
帮你顶up
duiduiblues 2002-09-27
  • 打赏
  • 举报
回复
up
everandforever 2002-09-27
  • 打赏
  • 举报
回复
这是老大难问题啦.
你为什么要接管操作系统的内存分配工作呢?
wuxuan 2002-09-27
  • 打赏
  • 举报
回复
对每个变量分配的空间是由用户申请的,如果重新申请同一变量,再相应调整空间。
应该按照内存整理的方法来进行内存碎片的整理。
如何移动吗,因为堆空间不是很大,所以算法的算法并不是要求很高。
duiduiblues 2002-09-27
  • 打赏
  • 举报
回复
up

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧