硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5071|回复: 6
收起左侧

[MDK] 堆栈设置的矛盾和问题

[复制链接]

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2015-12-3 22:45:17 | 显示全部楼层 |阅读模式
在启动文件中,实测,
增加stack size 1k空间,编译后提示的RAM占用会增加1k。符合预期!
但是,增加heap空间1k,编译后的RAM占用保持不变!!  理论上,heap是紧接着stack的,怎么会对编译结果没有影响呢?

程序中有emwin,查看编译后的htm文件,提示

Maximum Stack Usage = 712 bytes + Unknown(Cycles, Untraceable Function Pointers)




如果设置 stack大小为1k,运行起来会花屏。设置为2k大小时,一切ok。


回头分析emwin的说明文档,仅它就基本上需要0.6k(基础)+0.6k(窗口管理器)+0.2k(MEMDEV)=1.4k左右,所以这个htm分析的stack需求有很大的误差!!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2015-12-4 20:10:53 | 显示全部楼层
回头分析emwin的说明文档,仅它就基本上需要0.6k(基础)+0.6k(窗口管理器)+0.2k(MEMDEV)=1.4k左右
================
这个应该不是特指栈的需求。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2015-12-4 20:13:13 | 显示全部楼层
但是,增加heap空间1k,编译后的RAM占用保持不变!!  理论上,heap是紧接着stack的,怎么会对编译结果没有影响呢?
------------------------
你添加上malloc等需要动态内存的函数,编译后就有效果,如果你没有调用相关函数,默认是优化掉了。
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
 楼主| 发表于 2015-12-6 21:21:38 | 显示全部楼层

回 eric2013 的帖子

eric2013:但是,增加heap空间1k,编译后的RAM占用保持不变!!  理论上,heap是紧接着stack的,怎么会对编译结果没有影响呢?
------------------------
你添加上malloc等需要动态内存的函数,编译后就有效果,如果你没有调用相关函数,默认是优化掉了。 (2015-12-04 20:13) 
这个是正解吧!

我自己的程序不太调用malloc的,一般在函数中设定局部变量,比较好控制。不会遗忘去释放空间。

这说明emwin自己也没有调用heap了? 如果设置heap为0,是不是也可以呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2015-12-8 09:03:35 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:这个是正解吧!

我自己的程序不太调用malloc的,一般在函数中设定局部变量,比较好控制。不会遗忘去释放空间。

....... (2015-12-06 21:21) 
一般情况下是可以的,不过部分的C库函数好像要要用一点heap空间。
回复

使用道具 举报

6

主题

390

回帖

408

积分

高级会员

积分
408
发表于 2015-12-8 11:24:46 | 显示全部楼层
[s:151]  [s:151]  [s:151]  [s:151]  [s:151]  [s:151]
回复

使用道具 举报

14

主题

109

回帖

151

积分

初级会员

积分
151
发表于 2015-12-11 09:01:36 | 显示全部楼层
受益良多,感谢二位[s:151] [s:151]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 03:05 , Processed in 0.042022 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表