动态内存分配

✍ dations ◷ 2025-05-19 15:46:39 #内存管理

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

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

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

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

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

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

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

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

相关

  • 衰退人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学在生物学及医学上,老化是生理状态随时
  • 美国国家科学研究委员会美国国家科学研究委员会(United States National Research Council),1916年由美国国家科学院创建的“民间非营利组织”,是美国国家科学院、美国国家工程院和美国国家医学院(英语:N
  • 同性恋者第一次世界大战后,在德国魏玛共和国时期,同性恋者在德国,特别是在柏林有着比较世界上任何地方都更自由和更被接受的生活。然而,随着阿道夫·希特勒的崛起,禁止同性恋成为纳粹政党
  • 石墙暴动前的美国LGBT事件列表下表记录了石墙骚乱发生前的美国LGBT平权运动事件。尽管1969年的石墙骚乱普遍被视为同性恋平权运动的开始:xi:194,但早在石墙骚乱发生前就已有同性恋者自发或由同性恋团体组
  • 史都华·哈默洛夫史都华·哈默洛夫(Stuart Hameroff ,1952年7月16日),美国亚利桑那大学麻醉学系与心理学系教授、意识研究中心主任教授。
  • 海狮科海狮科(拉丁语学名:Otariidae)是食肉目动物中的一个科,是长有外耳的鳍足动物,总共有14种。而那些长有内耳的鳍足动物则被称为真海豹,即海豹科(Phocidae)。海狮科包括体形比较大的鳍
  • 仰光爆炸事件仰光爆炸事件是指在1983年10月9日,在缅甸旧首都仰光的昂山将军墓地发生的一宗暗杀事件,目标为时任大韩民国总统全斗焕为首的访问团。在这次事件中,共炸死21名韩国政府人士和缅
  • 姬路城坐标:34°50′22″N 134°41′38″E / 34.83944°N 134.69389°E / 34.83944; 134.69389姬路城(日语:姫路城〔姫路城〕/ひめじじょう )是一座位于日本兵库县姬路市的城堡,为该市
  • 金龙桥坐标:26°47′04″N 100°23′19″E / 26.78441°N 100.3887°E / 26.78441; 100.3887金龙桥又名梓里江桥、梓里桥,位于云南省丽江市的金沙江上,东连梓里,西接鹤庆,距丽江城约80
  • 通用缺陷列表通用缺陷列表(Common Weakness Enumeration, CWE)是一个对软件脆弱性和易受攻击性的一个分类系统。它由一个的开源社区工程维持,该社区有理解软件中的瑕疵并创作对自动化工具去