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

时间:2011-03-16 17:18:09

标签: c++ android crash

我正在修复关于android多媒体框架低级c ++ lib的错误。当代码运行到以下位置系统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++;
}

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

1 个答案:

答案 0 :(得分:0)

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

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

关于我的问题的答案,可能是当你更改代码时,它修改了一些东西,足以使pChar中的垃圾恰好指向有效的内存位置。正如Ben Voigt在评论中指出的另一种可能性是,检查在第二版中正在优化,因为*pChar的任何值都会导致它true