实时系统中动静结合的内存管理实现释放算法稍微复杂一些,它需要先检查该内存块属于哪个分区。这样做非常必要,如果把一个小块放到大块的内存分区中,一个任务申请了该空间,则该空间的一部分将跨越到另一个内存块,对该内存块的操作可能覆盖另一个内存块的数据。如果把一个大块放到了小块的分区中,则在分配的时候将分配了多余的空间,造成了内存空间的浪费。1.系统分区的方式其实是小范围动态分区上实现的静态方式。因为每个内存块大小是固定的,这样不可避免地要浪费一部分空间。对于这个问题的解决,系统还提供了一种纯动态的解决办法,就是调用malloc/free函数来申请内存块。 2. 内存用户区的动态内存分配 从内存划分图中可以看到有一块用户内存区,这是一块内核不会使用的内存区。该区留给用户使用,对于这块区域的申请和释放不调用系统提供的Mem_Alloc/Mem_Free函数,而是直接调用c语言提供的malloc/free函数。malloc具有不确定性,因为它的执行时间和空闲内存块的数量有关,而且多次使用malloc/free调用和释放内存块,可能产生大量的内存碎片。所以这种方式的调用要谨慎。由于用户内存区大小是
【如果您还没有关注“公司名称”手机网站】