找回密码
 立即注册
楼主: zhangz***

遇到局部变量被意外修改的问题,发现是编译器给2个局部变量分配了相同的地址?

[复制链接]
  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-27 09:56:55 | 显示全部楼层
    zhangzhonghua 发表于 2023-12-27 09:49
    高手,确实不是函数名调用,而是用函数指针调用。

    *g_pFunc = func2;   // 函数指针指向func2()

    那我就说中了!
    原则上的解决办法是 自己维护调用树,,,
    取巧的办法是 直接关闭OVERLAY的功能,,至于上面小伙伴说的优化等级啊 什么volatile,什么static治标不治本。
    怎么维护 可以百度一下,我这里说太麻烦了。


    怎么关闭 我给你截个图
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-27 09:58:37 | 显示全部楼层
    截图202312270958347017.jpg
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    52

    回帖

    160

    积分

    注册会员

    积分
    160
     楼主| 发表于 2023-12-27 10:01:35 | 显示全部楼层

    维护调用树太麻烦了吧?我还是看看Overlay,看看不用Overlay我的内存够不够用。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-27 10:01:56 | 显示全部楼层
    emmmm 这中做法会导致 内存占用增大,,,毕竟是给所有的局部变量都分配了地址,,,然后如果用了LX51链接器,,其中的 REMOVEUNUSED 功能失效,好像这个功能也是用了利用调用树实现的。

    所以 ,,最最根本的是调用树,,无论如何 ,用或者不用,请查一下相关知识
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-27 10:03:22 | 显示全部楼层
    本帖最后由 _奶咖君_ 于 2023-12-27 10:22 编辑
    zhangzhonghua 发表于 2023-12-27 10:01
    维护调用树太麻烦了吧?我还是看看Overlay,看看不用Overlay我的内存够不够用。 ...

    你说的没错,,,所以我偷懒了

    但是还是建议您会维护,咱们可以不用,但是得会
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    113

    回帖

    627

    积分

    高级会员

    积分
    627
    发表于 2023-12-27 10:30:37 | 显示全部楼层
    zhangzhonghua 发表于 2023-12-27 09:49
    高手,确实不是函数名调用,而是用函数指针调用。

    *g_pFunc = func2;   // 函数指针指向func2()

    都改成可重入函数就行了
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    52

    回帖

    160

    积分

    注册会员

    积分
    160
     楼主| 发表于 2023-12-27 11:11:36 | 显示全部楼层
    nooverlay.PNG
    加了NOOVERLAY,居然有链接错误,说无效的命令行语法。这怎么回事?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    52

    回帖

    160

    积分

    注册会员

    积分
    160
     楼主| 发表于 2023-12-27 11:14:48 | 显示全部楼层
    _奶咖君_ 发表于 2023-12-27 10:01
    emmmm 这中做法会导致 内存占用增大,,,毕竟是给所有的局部变量都分配了地址,,,然后如果用了LX51链接 ...

    我就是LX51链接器,还用了REMOVEUNUSED,现在加上NOOVERLAY就出错了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 08:41
  • 签到天数: 134 天

    [LV.7]常住居民III

    20

    主题

    1039

    回帖

    2459

    积分

    金牌会员

    积分
    2459
    发表于 2023-12-27 11:16:17 | 显示全部楼层
    zhangzhonghua 发表于 2023-12-27 11:14
    我就是LX51链接器,还用了REMOVEUNUSED,现在加上NOOVERLAY就出错了。

    发个截图?是不是逗号用成中文了
    参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
    技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    4

    主题

    52

    回帖

    160

    积分

    注册会员

    积分
    160
     楼主| 发表于 2023-12-27 11:19:55 | 显示全部楼层
    zxcv1973 发表于 2023-12-27 10:30
    都改成可重入函数就行了

    怎么改成可重入函数?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-2 16:06 , Processed in 0.112718 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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