URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2021
[ Назад ]

Исходное сообщение
"Segmetation fault"

Отправлено necroman , 28-Авг-03 10:11 
Что это такое. при каких условиях эта ошибка всплывает ?

Содержание

Сообщения в этом обсуждении
"Segmetation fault"
Отправлено NetKnight , 28-Авг-03 12:21 
>Что это такое. при каких условиях эта ошибка всплывает ?

При неправильном приведении типов.


"Segmetation fault"
Отправлено Soldier , 28-Авг-03 12:57 
>>Что это такое. при каких условиях эта ошибка всплывает ?

Выписка из man

Signal     Value     Action   Comment
--------------------------------------------------------
...
SIGSEGV      11        C      Invalid memory reference
...


>При неправильном приведении типов.

А что значит правильное приведение типов?


"Segmetation fault"
Отправлено necroman , 29-Авг-03 08:53 
>>Что это такое. при каких условиях эта ошибка всплывает ?
>
>При неправильном приведении типов.
Тогда как от seg fault избавиться тут ;

int main() {
         char *msg;
         scanf("%s",msg);
}

"Segmetation fault"
Отправлено sev , 29-Авг-03 09:00 
>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>
>>При неправильном приведении типов.
>Тогда как от seg fault избавиться тут ;
>
>int main() {
>         char *msg;
>         scanf("%s",msg);
> }

более хитрый случай

  char* str="123 456 ...";
  char* t=strtok(str," \t");
приводит к аналогичному результату.


"Segmetation fault"
Отправлено Soldier , 29-Авг-03 10:05 
>>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>>
>>>При неправильном приведении типов.
>>Тогда как от seg fault избавиться тут ;
>>
>>int main() {
>>         char *msg;
>>         scanf("%s",msg);
>> }
>
>более хитрый случай
>
>  char* str="123 456 ...";

No comments...

char* str=strdup("123 456 ...");


>  char* t=strtok(str," \t");
>приводит к аналогичному результату.

См. выше


"Segmetation fault"
Отправлено Soldier , 29-Авг-03 09:52 
>>>Что это такое. при каких условиях эта ошибка всплывает ?
>>
>>При неправильном приведении типов.
>Тогда как от seg fault избавиться тут ;
>
>int main() {
>         char *msg;
>         scanf("%s",msg);
> }

Сделать например
msg=(char *) malloc(20);

Тогда для как минимум 19 символов все будет OK

P.S. И когда вы хоть немного доки читать будете, люди... :)


"Когда на такие вопросы перестанут отвечать. (-)"
Отправлено Арлекин , 01-Сен-03 11:04 
*


"Когда не будут больше спрашивать"
Отправлено anonymouse , 03-Сен-03 16:09 
strtok: These function cannot be used on constant strings.

#include <stdio.h>
#include <string.h>

int main () {

    char str[] = "123 456 ...";
    char *t = strtok (str, "\t");

return (0);
}


scanf ?
wher you want store result ?

#include <stdio.h>

int main () {

//char *str;    str = NULL
char str[100];

scanf ("%s", str);

printf ("str = %s\n", str);

return (0);
}


Find Truth and It makes you free.