Кросс-компиляция кода C ++ в ARM, сбой во время выполнения - PullRequest
0 голосов
/ 16 марта 2011

Я исправляю ошибку в Android Media Framework ниже C ++ lib.Когда код переходит на следующую позицию, система вылетает.

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++;
}

Все в порядке.Меня не волнует использование «&&» или «||», я только хочу знать, почему это приводит к сбою.Кто-нибудь может дать мне несколько предложений?

1 Ответ

0 голосов
/ 16 марта 2011

Скорее всего pChar не указывает на действительные данные. Это единственное, что может вызвать сбой (за исключением ошибок компилятора).

Настоящая загадка заключается в том, почему измененная версия не дает сбой.

Что касается ответа на мой вопрос, может случиться так, что когда вы изменяете код, он изменяет вещи настолько, что мусор в pChar указывает на правильное расположение в памяти. Другая возможность, как отметил Бен Фойгт в комментариях, заключается в том, что проверка оптимизируется во второй версии, потому что любое значение на *pChar приведет к тому, что оно будет true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...