动态内存分配

✍ dations ◷ 2025-08-16 15:53:19 #内存管理

在计算机科学中, 动态内存分配(Dynamic memory allocation)又称为堆内存分配,是指计算机程序在运行期中分配使用内存。它可以当成是一种分配有限内存资源所有权的方法。

动态分配的内存在被程序员明确释放或被垃圾回收之前一直有效。与静态内存分配的区别在于没有一个固定的生存期。这样被分配的对象称之为有一个“动态生存期”。

分配过程包括寻找一块足够大未被使用的内存。

通常,内存是从一个被称为堆的内存池中分配出来的。高级语言封装了内存地址的概念,内存通常是通过指针来间接访问的。分配算法经常将组织分配释放组块等操作封装成抽象的接口供上层函数调用。

堆分配的效率与分配算法的优劣关系很大。

定长分配通常被称为内存池分配,使用一个链表来保存空闲内存块信息(通常每块内存大小相同)。这种方法在简单的嵌入式系统中效果很好。

在这种分配方式下,内存从一个2的N次幂大的内存块中分配。当内存块比要分配的长度大两倍以上,内存块平均分裂成两块。选中其中一半,重复这个过程(检查长度,满足条件则分裂)直到内存块刚好等于需要的长度。

所有的块信息保存在一个排序过的链表或者二叉树中。当一个块被释放的时候与他的相邻块进行比较。如果他们都被释放,就合并成一个大块放进更大的一个块列表中。每当分配结束,分配器会从尽量小的块重新开始分配,以避免产生不必要的碎片。

相关

  • 蛋白激酶蛋白激酶(英语:Protein kinase)负责体内蛋白质的磷酸化。它和负责蛋白质的脱磷酸化的蛋白质脱磷酸化酵素(protein phosphatases)有相对的功能。蛋白质的磷酸化决定蛋白质的构造和
  • 物质状态物质状态是指一种物质出现不同的相。早期来说,物质状态是以它的体积性质来分辨。在固态时,物质拥有固定的形状和容量;而在液态时,物质维持固定的容量但形状会随容器的形状而改变
  • 高雄巨蛋高雄市现代化综合体育馆(英语:Kaohsiung Arena),简称“高雄巨蛋”、K-Arena,位于中华民国台湾高雄市左营区,为一座可容纳一万五千人的多功能体育场,2004年8月30日由中国钢铁和达欣
  • 温度梯度温度梯度(英语:Temperature Gradient),是描述温度在特定的区域环境内最迅速的变化会向何方向,以及是何种速率的物理量。温度梯度是一维的数量,单位是度/每单位长度(在特定的温度范
  • Maurice莫里斯或莫瑞斯可以指:
  • 多弗粉杜佛氏散(英语:Dover's powder)别称吐根阿片散或复方吐根散,是一种用来医治感冒和发烧症状的传统药物,得名于其开发者英国医师汤玛士·杜佛,并约在1960年代后完全不再应用于现代医
  • 因瑟利克空军基地第39基地联队(英语:39th Air Base Wing)因吉利克空军基地(土耳其语:İncirlik Hava Üssü,IATA代码:UAB;ICAO代码:LTAG)是土耳其的空军基地,位于土耳其东南部临近叙利亚的阿达纳市因吉
  • 可拉鳉可拉鳉为辐鳍鱼纲鲤齿目鲤齿亚目鲤齿鳉科的其中一种,被IUCN列为濒危保育类动物,分布于中美洲墨西哥San Luis Potosi流域,体长可达8公分,栖息在砾石底质、植被生长的水域,属杂食性
  • 李恒 (植物学家)李恒(1929年-),女,为中国植物学家,任职于中国科学院昆明植物研究所,《中国植物志》的编辑者之一,对云南植物尤其是天南星科植物的研究贡献良多。2013年,获得国际天南星科学会所颁授的
  • 胡道静胡道静(1913年2月-2003年11月5日),安徽省泾县人,出生于上海,中华人民共和国学者。1931年毕业于上海持志大学文科国学系,1932年入上海通志馆,专事修志工作,撰有《上海新闻事业之史的发