需要完成一个函数:it init_heap(uint32-t size)
任务描述:这个函数分配一个大小为字节的内存区域,所有的分配都将在该区域内进行。如果size小于最小堆大小(4096),则size被设置为最小堆大小。size的值也被四舍五入到最接近4的倍数(例如,5001将被四舍五入到5004)。
这个函数设置my_heap。Heap_mem指向已分配区域的第一个字节。然后,它将该区域初始化为单个大的空闲空间块。最后,该函数分配一个大小为size/HEADER_SIZE的free_list数组,该数组包含指向heap_mem中空闲块的指针,并将该数组中的第一项设置为单个空闲空间块。如果它能够成功地完成以上所有操作,init_heap()返回0;否则,返回-1。
我的问题:这个任务前半部分分类讨论然后设置size值还是会的,后半部分的这个内存分配和指针相关问题查了半天还是非常地懵…我的这个任务应该是和内存分配和释放有关;该任务只是一项大任务的一部分,所以任务描述里可能涉及一些前边已经设置过的量;不知道能否麻烦有专家描述或者写一下这个函数部分(如果有注释更好;然后代码写个大概也可以的,只是想参考那个内存到底怎么处理,非常感谢)让我可以参考并学习理解一下和内存有关的这个部分我应该怎么操作,谢谢!
原任务图片如下
