Ошибка SIGSEGV выход за пределы памяти
Решал задачки на leetcode.com подсмотрел решение получше у одного из пользователей (kljsandjb) часть кода
bool isValid(char * s){
size_t s_Len = strlen (s);
size_t stack_size = 0;
char * stack = (char *)malloc (s_Len * sizeof(char));
if ((s[0] = 0) || (s_Len <= 1))
return false;...
при воспроизведении добавил проверку
if ((s[0] = 0) || (s_Len <= 1)) return false; если не комментировать эти строки ловлю ошибку SIGSEGV.
Внимание вопрос:
Почему плохо обращаться к s[0] в этом месте?
Далее по тексту я присваиваю и проверяю в цикле FOR от s[0] и до s[s_Len], когда проблемные строки закомментированы программа работает.
Ответы (1 шт):
Автор решения: The_Blind_Watchmaker
→ Ссылка
Благодаря комментарию @Vladimir:
s[0]=0 это присваивание, а не проверка на равенство нулю
Ошибка - некорректное использование оператора =.