5207|9

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

[请教]关于函数中意外修改指针内容 [复制链接]

又得麻烦大家讨论一下了!我先谢过了!

我设计程序的时候,使用了函数指针将一个结构体指针Item传递到对应函数中,但是在函数指针对应的函数中,一些没有使用到结构体指针Item的函数,却意外地修改了结构体的内容,请问大家是什么问题?我使用的是IAR

之前我使用Keil的51开发时候,也遇到过这种情况,不过减少全局变量的使用,则全局变量不会被不相关函数影响,不知在这个地方也是这个问题?

但是我就开辟了2-3个全局变量,不可能多啊

谢谢大家!
此帖出自stm32/stm8论坛

最新回复

                                 实在是太奇怪了 不同的.c文件调用还有不一样的结果 而且我发现只要我单步执行,结果就不会变化,但是只要我跳过一个函数,意外就发生了。我换了J-link 换了板子,结果都一样 就差没有换电脑了……  详情 回复 发表于 2009-8-31 10:19
点赞 关注
 

回复
举报

70

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
在线等!

谢谢大家!
此帖出自stm32/stm8论坛
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个问题恐怕只有你自己知道了。

我能想到的只可能是堆栈溢出。

你还是通过调试,一步一步地看看,在哪里修改了不该修改的数据。
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

4
 
好的!

谢谢香主 我马上去查查堆栈!

那些函数对于一个全局指针没有任何操作!我都觉得怪了
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

5
 
在这方面还有些不明白…… 我如何看到堆栈溢出呢?

发现在调用函数指针之前,一切变量都是正常的,但是一旦调用后,所有的值都发生了改变,仅仅发生在调用阶段 然后CStack由R0-R7变成了R0-R15

我怀疑是否需要修改icf值?
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
更新一下这个问题

同样使用函数指针 同样的函数 我在Main.c中使用和在其他.c文件中效果完全不一样 在其他文件中使用时根本结

构体指针都没有变化!

当然我的优化等级为None
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 在线等
此帖出自stm32/stm8论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 你函数里面有没有操作其他指针和数组啊?越界也是有可能的.
此帖出自stm32/stm8论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

9
 
我这里面没有几个数组啊 我都数了好几遍了 没有超出范围啊

操作了指针所指向的内容 但是结构体指针其他的地方也被改动了啊
此帖出自stm32/stm8论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(中级)

10
 
实在是太奇怪了

不同的.c文件调用还有不一样的结果

而且我发现只要我单步执行,结果就不会变化,但是只要我跳过一个函数,意外就发生了。我换了J-link 换了板子,结果都一样 就差没有换电脑了……
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表