这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ARM,heap 关于ARM初始化中heap的大小分配?

共2条 1/1 1 跳转至

ARM,heap 关于ARM初始化中heap的大小分配?

院士
2006-09-17 18:14:16     打赏
ARM,heap 关于ARM初始化中heap的大小分配?



关键词: 关于     初始化     大小     分配    

院士
2006-12-22 22:43:00     打赏
2楼
问 谁能告诉我ARMheap分配的大小是考什么来确定的。还有他是分配给谁用的  1: 你准备使用malloc/free这两个函数吗? 2: 暂时还不用,但我想知道这个区是做什么的是不是heap这个区就是malloc/free这二个函数的最大分配内存和释放内存的空间大小啊!还有其它的用途吗? 3: 堆栈,有堆和栈之分,也就是一块区域的两头,调用函数会出入栈,MALLOC 动态分配内存,这个内存当然不能从栈里面分了,所以只能从堆里面来分。
ADS 不知道你的堆和栈具体地址在哪里,也不晓得究竟分多大,所以要你自己来搞定,HEAP 就是堆的初始化。
如果你不用动态分配(没有MMU的管理一般不建议用MALLOC)就不用设置堆了,

        EXPORT    __user_initial_stackheap
__user_initial_stackheap
        MOV     R0,   #0
        MOV     PC,   LR
即可,这里提供 __user_initial_stackheap 函数实际上是利用了类似C++ 的函数重载的技术,有ADS C 编译器支持。
具体见 ADS 的 C 编译器手册。ADS 目录下的 PDF 文件夹 4: 谢谢,看完的你的解释我已经明白了。现在我明白了heap的用处了。随便问一句关于__user_initial_stackheap函数的问题。我知道在这个函数中R0是用来存放heap的基址的,R2是存放其长度限制的。我想问的是这个长度限制值是heap的长度呢?还是heap的结束地址?还有编译器是怎么使用这个长度限制变量的,怎么办判断是否超出了分配的长度,如果超出了长度限制什么有什么提示,或处理器会进入什么状态。还有这个函数里还一个堆的基址寄存器R1,他这个堆的基址寄存器是按向上增长的,还是按向下生长的基址来赋初始地址。还是他能够区分出堆是怎么生长的,怎么处理才可以区分出。我现在这个函数这个寄存器没有赋值,一赋值堆的空间就不对了(用的是LPC2210,堆是向下增长的)。希望能够帮我解答一下,谢谢!

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]