原子哥的内存分配其实并没有用到malloc 和 free是吧?

2019-07-21 08:22发布

看了一下,其实是自己定义数组先由系统给定了很大一块内存。40K,然后在这40K上面再去自己分配给需要动态分配的,而且即使myfree了这些内存还是会占用的。
而其他不用动态方式分配的内存就由系统自己在64k-40k的空间里分配,比如各种int i;
是这个意思吧?
然后在程序里想为数组动态分配内存是不是就可以这样,u16 *p;定义一个指针
然后p=mymalloc(SRAMIN,2*totpicnum);  指向一个地址
然后就可以直接用  p[2]去存数据了
也就是说,定义一个指针,就可以用他当数组用了是吗
~~我的天~~呀,这么神奇的吗~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
csmjmcc
2019-07-21 11:58
我是这样理解的,不知道对不对:
1、malloc 和 free 诸如有操作系统管理内存下的内存分配、释放的内存管理指令。
2、若是裸机,即无操作系统管理下,或者说无内存管理支持环境的编写的程序是不可以使用malloc 和 free函数的。
3、所以,在裸机环境下,我们需要自己编写一个内存管理程序块。正如楼主所说的,弄一块内存,然后由自己的函数mymalloc()申请自己管理约定的内存块。同样,也可以自己编写myfree()函数来释放内存。

以上,仅是抛砖引玉,欢迎批评指导!

一周热门 更多>