关于__user_initial_stackheap( )

[复制链接]
 楼主| machunshui 发表于 2009-10-23 16:35 | 显示全部楼层
本帖最后由 machunshui 于 2009-10-23 16:38 编辑

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

启动文件要做的事情:

1.保留出堆空间,
2.告诉编译系统堆信息
 楼主| machunshui 发表于 2009-10-23 16:44 | 显示全部楼层
栈要配置的原因是MCU提供了出入栈的实现机制,
即出入栈指令,栈指针寄存器(对ARM7来说并非专用,而是默认的寄存器).

如果MCU没有出入栈指令(实际上都有),那么就要由编译器提供的C库完成或者用户自己编写栈实现代码,
那栈的设置应该就和堆差不多,
即保留栈空间,提供栈信息
xwj 发表于 2009-10-23 17:05 | 显示全部楼层
实际上,堆和栈都是占位子、抢地盘,我的地盘谁都不许动!

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

堆得空间、内容都是自己的,而栈的内容很多时候是别人的(比如PC返回指针)
flashdyc 发表于 2009-10-23 20:32 | 显示全部楼层
多谢各位的帮助,楼主在21楼的回答已经解决了问题
dream_east 发表于 2009-11-11 22:45 | 显示全部楼层
不错的贴
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
快速回复 在线客服 返回列表 返回顶部