OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7005|回复: 6

局部变量内存分配问题

[复制链接]

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
发表于 2013-5-17 21:21:52 | 显示全部楼层 |阅读模式
    前几天看了一本书 上边说单片机Keil的局部变量 存放在RAM  占用内存是函数中局部变量占用最多的那个  也就是说 所有函数的局部变量共同占用一块内存区域 这个内存区域大小由 局部变量最多的那个函数决定   我有一个问题有点困惑  既然所有函数的局部变量占用一个内存区域 那么一个函数调用另一个函数的时候 岂不是会出现局部变量内存覆盖的现象? 求解释
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-17 22:00:41 | 显示全部楼层
看这个:http://blog.csdn.net/zhbsniper/article/details/7179316

编译器可以通过分析不同函数间的调用关系,分配不同变量的位置,防止相互覆盖。
但是,由于同一个函数的同一个变量只能分配一个地址,所以c51的函数是不可重入的。
业余程序玩家。
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-5-17 22:32:59 | 显示全部楼层
栈就是起这个作用的。 
根据调用深度不同 依次压栈 , 待调用完成后再出栈。
所以只要栈的空间够用, 即便同时调用几次,也不会冲突
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-5-18 10:12:06 | 显示全部楼层
回复【2楼】ofourme:
---------------------------------
你好 很感谢你的回答 你给这个博客我看了 确实讲的很详细 我也明白了 但是还有一个问题想请教下 当在C中 使用goto语句从一个函数跳转到另一个函数的时候 局部变量会怎样 会不会出错或者是被覆盖什么的
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2013-5-18 11:50:45 | 显示全部楼层
我是之前有点印象,但早都忘记了。答案也是即时搜索的,你可以善用搜索引擎。

在实际应用中goto只能在函数体内使用的哦!难道你没动手实践过?C语言里用setjmp和longjmp函数可以在函数间跳转。
业余程序玩家。
回复 支持 反对

使用道具 举报

71

主题

183

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
494
金钱
494
注册时间
2013-1-29
在线时间
1 小时
 楼主| 发表于 2013-5-18 17:01:48 | 显示全部楼层
回复【5楼】ofourme:
---------------------------------嘿嘿  谢谢 知道了 很少使用goto 呵呵 都忘记了 谢谢回答 我连C的标准都不清楚了 我该好好复习C语言了 呵呵
回复 支持 反对

使用道具 举报

13

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2014-7-3
在线时间
38 小时
发表于 2016-1-8 21:10:30 | 显示全部楼层
ofourme 发表于 2013-5-17 22:00
看这个:http://blog.csdn.net/zhbsniper/article/details/7179316

编译器可以通过分析不同函数间的调用关 ...

这个链接打不开了,还有别的吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 23:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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