Я создал переменную и присвоил ей какое-то значение.Когда я вызываю функцию и пытаюсь изменить значение переменной, я получаю ошибку шины.
Если я использую malloc, работает.
Мой вопрос:
Почему нетне работает без malloc?
потому что я думаю, что теоретически, когда вы создаете переменную, вы автоматически получаете адрес памяти (printf ("% p") доказывает это), и вы можете получить доступ к значениям этой переменной, поэтому памятьуже выделены и используются.
Так почему вы не можете изменить без ошибки шины?
вот мой код
void strclr(char *s)
{
printf("%s \n", s);
while(*s)
{
*s = '\0';
s++;
}
printf("%s ok", s);
}
int main()
{
char *str = strdup("testing"); //allocate with malloc
char *str2 = "testing";
strclr(str); //works
strclr(str2); //don't work, bus error;
}