1、定义一个内存节点的结构体链表,这个节点是一个内存空余空间节点,应该包括节点首地址,节点大小,节点状态(占用还是空闲),下个节点指针等;
2、初始化首个节点(如果由空节点做头指针,空节点不算首个节点),给首个节点申请一片大的内存空间(1M以上);
3、实现申请内存操作:申请内存,跟库函数malloc功能相似,从首节点开始,判断空余节点空间是否大于申请空间,如果是,就从空余节点空间分割出一个申请空间的节点,将此节点设为占用,余下空间设为空余另成一个节点。申请空间就是找到满足大小要求的空闲节点,一分为二,一占用一空闲。也可以设定空闲空闲小于一个常量,就不再分了,全部占用。
4、实现释放内存操作:释放内存,跟库函数free类似,就是将占用节点的状态设为空闲,但是,需要判断前后节点是否也是空闲,如果前后节点是空闲,则需要合并节点。释放内存,就存在多合一的操作。
5、编写一个主程序,用菜单实现内存操作的演示,动态展示当前内存空余多少,占用多少。
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。
首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。不提供源码代写、项目文档代写、论文代写、作业代写、安装包资源发送或安装、软件使用指导等服务。
我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。