发新帖我要提问
12
返回列表
打印

关于__user_initial_stackheap( )

[复制链接]
楼主: machunshui
手机看帖
扫描二维码
随时随地手机跟帖
21
machunshui|  楼主 | 2009-10-23 16:35 | 只看该作者 回帖奖励 |倒序浏览
本帖最后由 machunshui 于 2009-10-23 16:38 编辑

换句话说,堆只是一块专用空间,需要保留下来,
当用户用malloc()动态分配内存的时候从里面化分而已,

启动文件要做的事情:

1.保留出堆空间,
2.告诉编译系统堆信息

使用特权

评论回复
22
machunshui|  楼主 | 2009-10-23 16:44 | 只看该作者
栈要配置的原因是MCU提供了出入栈的实现机制,
即出入栈指令,栈指针寄存器(对ARM7来说并非专用,而是默认的寄存器).

如果MCU没有出入栈指令(实际上都有),那么就要由编译器提供的C库完成或者用户自己编写栈实现代码,
那栈的设置应该就和堆差不多,
即保留栈空间,提供栈信息

使用特权

评论回复
23
xwj| | 2009-10-23 17:05 | 只看该作者
实际上,堆和栈都是占位子、抢地盘,我的地盘谁都不许动!

只是应用上有所区别,
堆是抢占一大块,然后自己在里面想怎么玩就怎么玩,顺序随意;
而栈则是要一个则抢一个,然后按照先进后出、后进先出的原则来归还——当然,归还前还是都归自己管的,你也可以用栈加偏移来访问到

堆得空间、内容都是自己的,而栈的内容很多时候是别人的(比如PC返回指针)

使用特权

评论回复
24
flashdyc| | 2009-10-23 20:32 | 只看该作者
多谢各位的帮助,楼主在21楼的回答已经解决了问题

使用特权

评论回复
25
dream_east| | 2009-11-11 22:45 | 只看该作者
不错的贴

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则