看rt_realloc
源码,对于基本思路我的理解是:
- 如果之前的内存块足够容纳新申请的内存块+最小内存块,就把这个内存块分割成两个,后一个作为空闲块返给管理系统,前一个就是函数要返回的新申请到的内存块
- 如果之前的内存块不够容纳新申请的内存块,那么就用
rt_malloc
直接申请一个新的内存块,并释放之前的内存块
我的问题是,代码里区分以上两种情况的条件是: if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE < size)
但是可能存在newsize
不满足这个条件,但却仍然比size
小的情况,这时为什么没有直接用当前这个内存块,而是重新去申请?