У меня есть такой код, который решается мной следующая проблема упражнений из K & R книги:Как преодолеть ошибку Stack Smashing?
#include<stdio.h>
void stringCat(char *s,char *t)
{
while(*s++);
while((*s++ = *t++));
}
void main()
{
char message1[] = "hello whats been up?";
int i;
char message2[] = "this should be added at last";
stringCat(message1,message2);
for(i=0;i<50;i++)
{
printf("%c\n",message1[i]);
}
}
Программа работает как задумано, чтобы быть и также я получаю такой вывод:
hello whats been up?this should be added at last
Но я получаю сообщение об ошибке с последующим выходом:
** stack smashing detected : ./a.out terminated ======= Backtrace: ========= */lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)Aborted*
Я пришел, чтобы узнать, почему это происходит от here. Но я не мог понять, почему это происходит в моем коде?
Я новичок в C, мне нужна ваша помощь. Заранее спасибо.
Не забудьте «освободить» буфер –
@NiklasB .: Окончание программы в любом случае, но я положу его туда :) – Ryan
Да, но если он вырастет, правильное управление памятью может стать более важным .. Спасибо (: –