内存分配的发展历史

本文探讨了内存分配的历史,包括静态、栈和堆分配,以及垃圾回收技术。静态分配在早期编程语言中占主导,栈分配允许递归调用,堆分配提供了更大的灵活性,而垃圾回收则自动化了内存管理,提升了系统鲁棒性但可能影响性能。现代编程语言通常结合这些方法,选择合适的内存管理策略是关键。
摘要由CSDN通过智能技术生成

今天看到了一篇很不错的文章,阅读之后对内存分配和垃圾回收有了一个整体性认识,想要记录一下。
有兴趣的同学可以阅读下英文原文:Back to basic: Series on dynamic memory management
我们现在常用的编程语言都有一大堆不同的内存分配方式。我们现在可以选择使用静态内存分配,栈内存分配和堆内存分配。然而过去并不如现在美好,过去的语言仅仅支持静态内存分配,然后慢慢地出现了栈分配,再然后有了堆分配,直到现在很多语言有了自动内存管理功能。
然而这并不能说过去语言的极简的内存管理方式不好,接下来慢慢分析。

静态内存分配(Static allocation)

静态分配方式是所有内存在编译期间被分配(或称为被保留,像局部变量只有在执行时才使用内存,生命期无交叉的局部变量可能会使用相同的内存空间),程序中声明的变量在编译期间就已经被绑定到目标内存。它是最简单的内存分配方式,像50年代后期出现的Fortran支持这种内存分配方式。我个人认为汇编语言也算是这种内存分配方式,因为汇编语言基本在编码期间就能确定内存的分配和占用情况。在这种内存分配方式下,开发者要预先分配他可能会用到的最大内存。
这也意味着在程序运行之前我们的数据结构占用内存的大小都要是已知的,例如,只能使用固定长度的数组,而不能使用动态长度的链表,因为链表若在程序运行时增加节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值