打印

不释放局部变量的问题

[复制链接]
5478|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
morrisk|  楼主 | 2012-12-8 17:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在用keil开发c51程序时,出现了不释放局部变量的问题。
评论
icecut 2012-12-9 18:04 回复TA
变量多了自动覆盖.如果你遇到覆盖的时候,你就会发有可能出现莫名其妙的错误.并不是他不释放,而是优先编译成不释放.然后编译不下就自动覆盖优化 

相关帖子

27
明月小厨| | 2013-1-12 14:09 | 只看该作者
描述不严瑾导致跟贴出现大面积的偏差;你的问题是没有产生局部变量;

使用特权

评论回复
26
wuzx-61| | 2013-1-11 19:14 | 只看该作者

使用特权

评论回复
25
superman2012| | 2012-12-11 23:20 | 只看该作者
在C51 编程序的时候设定的变量有时候被设为static

使用特权

评论回复
24
zhao3462910| | 2012-12-11 13:19 | 只看该作者

使用特权

评论回复
23
gaochy1126| | 2012-12-10 23:51 | 只看该作者
怎么可能呢?

使用特权

评论回复
22
leadman| | 2012-12-9 23:13 | 只看该作者
keil编译就是这样的,根据c51的特点,会覆盖变量

使用特权

评论回复
21
W_Controller| | 2012-12-9 18:38 | 只看该作者
楼上的各位都说局部变量默认成了静态的,也就是楼主所说的不释放,可是,为什么我在keil下写的C51局部变量会释放呢,非要加static才行?

使用特权

评论回复
20
lzqxs89| | 2012-12-9 16:16 | 只看该作者
栩栩如生 发表于 2012-12-8 17:57
如果你写了个函数没有被调用 那么KEIL C编译器就会认为你的这个函数是个中断函数  ...

你这里所说的中断函数怎么理解啊?产生中断就会执行的函数?

使用特权

评论回复
19
morrisk|  楼主 | 2012-12-8 18:00 | 只看该作者
多谢大家了

使用特权

评论回复
18
morrisk|  楼主 | 2012-12-8 17:59 | 只看该作者
嗯,大体了解了,结贴了

使用特权

评论回复
17
栩栩如生| | 2012-12-8 17:57 | 只看该作者
所以里面的变量
也是占固定内存的。

使用特权

评论回复
16
栩栩如生| | 2012-12-8 17:57 | 只看该作者
如果你写了个函数没有被调用 那么KEIL C编译器就会认为你的这个函数是个中断函数

使用特权

评论回复
15
pengf| | 2012-12-8 17:55 | 只看该作者
中断服务程序中 即便不加static 也 会当作static一样看待

使用特权

评论回复
14
renyaq| | 2012-12-8 17:55 | 只看该作者
是啊,KEIL没有加reentrant的是非重入,没有上下文保护.

使用特权

评论回复
13
dingy| | 2012-12-8 17:53 | 只看该作者
用的是keil的C编译器的啥版本  用的啥优化级别

使用特权

评论回复
12
司徒老鹰| | 2012-12-8 17:53 | 只看该作者
KEIL也可以产生重入函数(reentrant关键关键字),和标准C类似

使用特权

评论回复
11
kangzj| | 2012-12-8 17:50 | 只看该作者
是的, 堆栈空间就很小了, 当心堆栈溢出

使用特权

评论回复
10
juventus9554| | 2012-12-8 17:50 | 只看该作者
data = 229.3, 好像这个数值太大了点

使用特权

评论回复
9
小小猫咪| | 2012-12-8 17:48 | 只看该作者
可以设定函数为重入类型试试, 不过这样的执行效率会差很多哦

使用特权

评论回复
8
小小猫咪| | 2012-12-8 17:48 | 只看该作者
楼主非要让局部变量放到堆栈去吗?

使用特权

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

本版积分规则

701

主题

6879

帖子

2

粉丝