使用STM32驱动外部SRAM,以扩展STM32的内存,加上STM32本身自带的64K字节内存,我们可供使用的内存还是比较多的。如果我们所用的内存都像上一节的testsram那样,定义一个数组来使用,显然不是一个好办法。本章,我们将学习内存管理,实现对内存的动态管理。
内部40K + 外部960K
1、内存管理简介
内存管理,是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配内存资源,并且在适当的时候释放和回收内存资源。内存管理的实现方法有很多种,他们其实最终都是要实现2个函数:malloc和free;malloc函数用于内存申请,free函数用于内存释放。
本章介绍一种比较简单的办法来实现:分块式内存管理。下面介绍一下该方法的实现原理。
从上图可以看出,分块式内存管理由内存池和内存管理表两部分组成。内存池被等分为n块,对应的内存管理表,大小也为n,内存管理表的每一个项对应内存池的一块内存。
内存管理表的项值代表的意义为:当该项值为0时,代表对应的内存块未被占用,当该项值为非0时,代表该项对应的内存块已经被占用,其数值则代表被连续占用的内存块数。譬如某项值为10,那么