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