As heap block may be allocated into multiple non-continuous chunks, to reserve enough memory for dma/internal usage, we do the malloc in the step of max available block.