免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1977 | 回复: 1
打印 上一主题 下一主题

[C++] 嵌入式中任务堆栈的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-10 19:47 |只看该作者 |倒序浏览
嵌入式平台:uitron
每个任务的stack的大小为2048(lib预设,无法更改)
使用C++

在线调试的时候,总是是不是死机或者出错重启,但是有时候又没有问题

在电脑上使用ucos模拟,stack大小是1024*4,没有任何问题


请问,是不是因为stack太小了从而导致死机?
这个stack到底是堆还是栈呢?如果是堆,那是不是容易产生碎片,从而碎片也会导致死机?

那么什么时候会使用stack呢? static?局部变量?new?

如何才能有效减少对stack的需求?

论坛徽章:
0
2 [报告]
发表于 2008-07-10 19:51 |只看该作者
原帖由 jemy.zhang 于 2008-7-10 19:47 发表
嵌入式平台:uitron
每个任务的stack的大小为2048(lib预设,无法更改)
使用C++

在线调试的时候,总是是不是死机或者出错重启,但是有时候又没有问题

在电脑上使用ucos模拟,stack大小是1024*4,没有任 ...


局部变量使用栈
函数调用使用栈(参数压栈,函数返回地址压栈,然后为调用创建新的stack frame,call跳转)

如果call stack太深 显然会不够用 递归就更是不可能了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP