LINUX.ORG.RU

сегфолт


0

0

почему такой код 

int main()
{
    char s[] = "123";
    printf("%s\n", strcat(s, "123"));
    return 0;
}

работает?

а такой:

int main()
{
    char s[] = "123";
    printf("%s\n", strcat(s, "12381237867463481247817481814361"));
    return 0;
}

выдаёт сегфолт?
anonymous

Потому что в первый раз ты потёр в стеке локальные переменные, а во втором ещё и адрес возврата

ejka
()
Ответ на: комментарий от anonymous

Просто напросто стркат не выделяет память (не делает маллок) при реализации - понятное дело что ты получаешь сегфолт пытаясь запихнуть строку больше чем выделено памяти

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.