C++代码交叉编译到ARM,运行时崩溃

标签 c++ android crash

我正在修复有关 Android 多媒体框架较低 C++ 库的错误。当代码运行到以下位置时系统goto崩溃。

if (((*pChar) >= _T('a')) && ((*pChar) <= _T('z'))) {
    nFrameTime++;
}

nFrameTime is int type;
pChar is wchar_t* type;

但是当我将代码修改为:

if (((*pChar) >= _T('a')) || ((*pChar) <= _T('z'))) {
    nFrameTime++;
}

一切都好。我不在乎使用“&&”或“||”,我只想知道为什么会崩溃。有人可以给我一些建议吗?

最佳答案

很可能pChar没有指向有效数据。这是唯一可能真正导致崩溃的东西(编译器错误除外)。

真正的谜团是为什么更改后的版本没有崩溃。

至于我的问题的答案,可能是当您更改代码时,它所做的修改足以使 pChar 中的垃圾恰好指向有效的内存位置。正如 Ben Voigt 在评论中指出的那样,另一种可能性是检查在第二个版本中被优化掉,因为 *pChar 的任何值都会导致它为 true.

关于C++代码交叉编译到ARM,运行时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329094/

相关文章:

memory - 当 eden 空间为 100% 时,JVM 崩溃

android - 蜂窝 ActionBar 项目 - 应用程序崩溃

C++:为什么转换为指针然后取消引用有效?

c++ - 使用默认网络摄像头的 API?

C++ 参数传递查询(包括代码示例和输出)

java - 无法通过记录器解析 com.android.packageinstaller Espresso 生成的代码

android - 从 Android 库中引用 .so 文件

ios - FBLoginView委托(delegate)方法被调用两次甚至3次

c++ - 程序编译、运行,但不会在 DevC++ 中结束

java - super.onCreate(savedInstanceState) 错误