gpt4 book ai didi

c - 奇怪的 RVDS 错误

转载 作者:行者123 更新时间:2023-11-30 19:50:30 25 4
gpt4 key购买 nike

我有一个针对某个视频解码器的 RVDS 项目(全是 C 代码),为 ARM926EJ-S 目标创建,使用 RVDS 2.2 模拟器执行。我没有使用任何 scatterload/ / 来提到代码中的各种内存段,例如堆栈段,RVDS 模拟器环境的堆、数据段、代码段。

  • 当我添加或注释一些代码(冗余/死代码),然后编译项目并执行它时,解码器在提到发生错误情况后优雅退出,而这不应该是这种情况,如注释/添加的代码是多余的,完全不影响功能。
  • 现在,如果我执行与 1.) 中所做的操作相反的操作,即取消注释步骤 1.) 中注释的代码并编译并执行,解码器将完全正常工作,直到其逻辑结束。
  • 相同的 C 源代码/头文件在 MSVC 工作区中工作得很好。

我尝试通过此行为进行大量调试,但无法查明原因和修复方法。

  • 这是我添加/删除代码时堆栈损坏的情况吗?
  • 是否有任何段被覆盖,例如堆栈段溢出到数据段,或者代码段溢出到数据段?

最佳答案

我正在做的一个项目也发生过类似的事情。最终导致引用堆栈上未初始化的指针出现问题。它通常会指向未使用的程序内存,并覆盖未使用的代码。

当我删除未使用的代码时,它突然指向不属于我修改的内存,并且它会不正常地退出。

仔细检查您的 malloc,并确保您的函数变量指针!

关于c - 奇怪的 RVDS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/310558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com