Ошибка 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 это присваивание, а не проверка на равенство нулю

Ошибка - некорректное использование оператора =.

→ Ссылка