如何实现自制内存分配和释放功能
最近在做一个项目,想要在MPC8270的CPU上,没有操作系统的情况下,实现内存的分配和释放功能。也就是我们常用的malloc和free功能。
由于没有操作系统,也不能用其他的库函数或者外部引用,所有的代码都得自己写。
其实关于内存的管理和释放我已经了解了一些,就是还有如下的一些问题不太明白:
1.据我所知,操作系统的malloc函数在分配空间时,是从堆里面找到可用空间分配出去的。那么,如果我自己实现这个功能,该怎么找到堆的地址和大小了?
2.我有看到说堆的大小是不固定的。这怎么理解?
3.可不可以在lcf文件中,像定义数据段或代码段那样直接指定位置和大小?
谢谢大家!!
[解决办法]
真正的操作系统 就是根据约定的地址 或者一个全局的变量来申请内存的,自己完全可以实现。
大小不确定 是否是指有可能申请一些其它地址如果heap不够? 这个机制一般不用也好, linux好像有。
完全可以在编译等环境指定其实地址,因为都是你自己规定的 呵呵。
[解决办法]
开一块内存,分为大小相同的N块,然后使用链表进行管理,或者使用数组直接实现简单的内存管理