分配与回收的目的
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/615d43c8df1f3ca4b84790f95cd91839.png)
内存分配的过程
单一连续分配(已经过时)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/259c565a20cd8f60773eb4596002734f.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/007c0f4e5519060acdf0228dad8a40af.png)
固定分区分配
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2055fc9adeaa1e30306a2fc359a13f21.png)
动态分区分配
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/3e4be864e9900e42b49d992e62bd06ee.png)
动态分区空闲表数据结构:0-没有使用,1-使用了
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/defd66fbb543bbcf4d3d0ba74f7d55be.png)
动态分区空闲链数据结构:连续的合并在一起,这样可以减少空闲链表的节点数。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1ce0880ce22b572d28b61bb196502cf9.png)
动态分区分配算法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/936d9f9d7f3d8df085613e40ca15ed25.png)
1. 首次适应算法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2bcc6e2a80e1785122589f1691bcd112.png)
第一个空闲区不满足则下一个,2,3为一个,满足需求。缺点:大材小用
2. 最佳适应算法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/21fad9a4767d1e1a7344d743dd31dfc3.png)
避免了大材小用的浪费
3. 快速适应算法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/26f6d642b5ef30e5d633f77d883f4eff.png)
内存回收的过程
回收区有四种情况
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/53a2a1241126732a6ee93832c2585823.png)
第一种(回收区在空闲区的后面):
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b42f8e40b8d744011fb3ea2d68d0bc43.png)
这里的增大是空闲区1增大后包含回收区。
第二种(回收区在空闲区的前面):
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0d09b093e24fb592f1e2ee4f6d133415.png)
第三种(回收区在空闲区的中间):
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2dd626999ab91bda93fa59c57d57222e.png)
第四种(回收区独立):
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2de9e464ced35306b668c86bc14f94e3.png)