Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 24
1

При получения пакета возникает ошибка "Segmentation Fault"

15.07.2013, 20:56. Показов 1726. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Учился отправлять структуру по сети, натолкнулся на глюк.
Если комментирую/удаляю выделенные комментариями строчки, после получения пакета пишет Segmentation Fault.
Если оставляю - всё нормально.
В чем проблема? Пользовался geany, попробовал собрать из терминала gcc name.c -o name, эффект тот же.
Пробовал создавать новый файл, собирать сразу без этих двух переменных - Segmentation Fault.
При этом появляется предупреждение, что переменные не используются, если я их не удаляю/не комментирую.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <sys/types.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
 
#define BUFLEN 1024
 
int main() {
    
    struct message {
        int number;
        char text[14];
    } *msg;
    
    int sock;
    struct sockaddr_in addr;
    char buf[BUFLEN];
    int intes = sizeof(int); //Почему это нельзя удалить?
    int i;
    int size_of_packet=0;  //Не удаляется!
    ssize_t bytes_read=0;
    
    sock=socket(AF_INET,SOCK_DGRAM,0);  
    addr.sin_family=AF_INET;
    addr.sin_port=htons(3333);
    addr.sin_addr.s_addr=htonl(INADDR_ANY);
    
    bind(sock, (struct sockaddr *)&addr, sizeof(addr));
 
    socklen_t addr_size=sizeof(addr);
    
    bytes_read=recvfrom(sock,buf,BUFLEN,0,(struct sockaddr*)&addr,&addr_size);
    buf[bytes_read]='\0';
    
    memcpy(&msg->number, buf, sizeof(int));
    memcpy(&msg->text, buf+sizeof(int), (ssize_t)msg->number);
    
    printf("%d bytes read\n",(int)bytes_read);
    printf("%d - number\n",msg->number);
    
    msg->text[14]='\0';
    for (i=0; i<msg->number;i++)    {
        putchar(msg->text[i]);
    }
    close(sock); 
    return 0;
}
Добавлено через 6 минут
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Добавлено через 4 минуты
Если закомментить последний цикл for, то снова после получения сообщения сразу появляется Segmentation Fault.
О_О
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.07.2013, 20:56
Ответы с готовыми решениями:

Почему возникает ошибка segmentation fault? В моей программе?
В детстве делал игру на паскале. теперь переписываю на си. Все начиналось хорошо. Пока не появилась...

Ошибка Segmentation fault (Core dumped)
Как избавится от ошибки Segmentation fault? Core dumped! на линукс, я предполагаю что это связано с...

Почему возникает ошибка segmentation fault ?
Как я поняла ошибка возникает из-за не правильного создания динамического массива, но в интернете...

В приведенном коде возникает ошибка "segmentation fault"
#include &lt;stdio.h&gt; int mas; int main(){ int i,j,k; for(i=0;i&lt;10;++i) scanf(&quot;%d&quot;,mas); return...

Почему возникает segmentation fault?
Прохожу матрицы спиралью, начиная с центра, но возникает segmentation fault, не могу понять почему...

3
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
15.07.2013, 22:34 2
Ну и куда по-вашему указывает msg?
1
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
22.07.2013, 15:30 3
msg создай иначе логическая ошибка и & перед сылкой убери
0
1 / 1 / 0
Регистрация: 02.03.2013
Сообщений: 24
22.07.2013, 16:07  [ТС] 4
Цитата Сообщение от Winorun Посмотреть сообщение
msg создай иначе логическая ошибка и & перед сылкой убери
Да, я уже создал структуру вместо указателя, глупая ошибка=)
0
22.07.2013, 16:07
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2013, 16:07
Помогаю со студенческими работами здесь

Ошибка Segmentation Fault при работе с QSqlQuery
Когда происходит запуск программного кода, база данных подключается, таке выводится размерность...

Ошибка выполнения Segmentation fault при открытии файла
Привет всем! почему не открывается файл, не понимаю что такое? ubuntu 16, qt creator 3.6.1...

C++ ошибка кода Segmentation fault при динамической памяти
помогите пожалуйста. задание такое: нужна программа которая хранит название страны с медалями и...

При вводе данных в программу выходит ошибка Segmentation fault
В чем может быть ошибка? Заранее спасибо! #include &lt;iostream&gt; #include &lt;string&gt; using namespace...

Возникают кракозябры при добавлении элементов структуры и ошибка Segmentation Fault
Здравствуйте! Возникла такая проблема: при написании задания возникает проблема с добавлением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
[Golang] 121. Best Time to Buy and Sell Stock
alhaos 28.01.2025
В этой задаче мы получаем слайс целых чисел, которые означают цену акции в разные моменты времени, и должны вернуть максимально возможную прибыль от купли продажи акции. / / . . .
Проектирование и моделирование
hw_wired 28.01.2025
Введение в моделирование Моделирование представляет собой один из фундаментальных методов научного познания, который позволяет изучать объекты и явления через создание их упрощенных аналогов. В. . .
Алгоритмы и исполнители
hw_wired 28.01.2025
Введение в алгоритмы В современном мире информационных технологий алгоритмы играют основополагающую роль в решении различных задач и автоматизации процессов. Алгоритм представляет собой точную. . .
Хранение информации
hw_wired 28.01.2025
Введение: Роль систем хранения информации в современном мире В современную эпоху цифровых технологий эффективное хранение информации становится одним из ключевых факторов успешного развития любой. . .
Обработка числовой информации
hw_wired 28.01.2025
Введение в обработку числовой информации В современном мире обработка числовой информации стала неотъемлемой частью как профессиональной деятельности, так и повседневной жизни. Электронные таблицы. . .
Мультимедиа
hw_wired 28.01.2025
Введение в мультимедийные технологии В современном мире мультимедийные технологии стали неотъемлемой частью нашей жизни, проникнув во все сферы человеческой деятельности. Термин "мультимедиа". . .
Обработка текстовой информации
hw_wired 28.01.2025
Введение в обработку текстовой информации В современном мире обработка текстовой информации играет фундаментальную роль в различных сферах человеческой деятельности. Текстовые редакторы стали. . .
Обработка графической информации
hw_wired 28.01.2025
Введение в компьютерную графику Компьютерная графика стала неотъемлемой частью современного цифрового мира, пройдя впечатляющий путь развития от простейших черно-белых изображений до сложных. . .
Python в Алгоритмике: Решение задач
hw_wired 28.01.2025
Введение в Python и Алгоритмику В современном мире программирование стало неотъемлемой частью образования и профессионального развития. Python зарекомендовал себя как один из самых популярных и. . .
Компьютер как универсальное устройство для работы с информацией
hw_wired 28.01.2025
Введение в устройство компьютера Компьютер представляет собой универсальное электронное устройство, предназначенное для автоматической обработки информации. В современном мире компьютер стал. . .
Информация и информационные процессы
hw_wired 28.01.2025
Понятие информации и ее виды В современном мире информация является одним из фундаментальных понятий, пронизывающих все сферы человеческой деятельности. Под информацией понимают любые сведения об. . .
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru