Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
#1

Обращение в неправильный участок памяти, используя структуры и pcap.h - C++

20.02.2011, 10:24. Просмотров 666. Ответов 2
Метки нет (Все метки)

Суть в чем: Есть программка, которая использует libpcap. При получении нового пакета функцией:
C++
1
2
3
4
5
pcap_t *adhandle;
struct pcap_pkthdr header;
const u_char *packet;
...
packet = pcap_next(adhandle,&header);
и дальнейшем снятии данных с пакета путем:
C++
1
2
3
4
5
6
7
typedef struct MAC_address{u_char byte1;u_char byte2;u_char byte3;u_char byte4;u_char byte5;u_char byte6;}MAC_address;
typedef struct eth_header_src{MAC_address smac;}eth_header_src;
...
eth_header_src * ethhSrc;
...
ethhSrc = (eth_header_src*)(packet+6);
cout << ethhSrc->smac.byte1;
Так вот, про прошествии n-го количества пакетов(совершенно рандомное количество) вылетает segmentation fault(core dumped) - т.е обращение в левый участок памяти...
Вопрос - ПОЧЕМУ ??? Ответ сам не нашел, поэтому пишу сюда. Помогите советом, кто сможет!

Upd1: segmentation fault только тогда, когда идет обращение к элементам smac.
т.е cout << ethhSrc->smac проходит. cout << ethhSrc->smac.byte1 уже нет.
И соответственно все операции, необходимые мне, я не могу провести с этими данными...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2011, 10:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение в неправильный участок памяти, используя структуры и pcap.h (C++):

Ошибка при освобождении памяти (block type is valid) и неправильный вывод структуры данных - C++
Доброго времени суток. У меня есть класс вектор для реализации длинной арифметики. Возникли проблемы с умножением. Я устроил эту...

Заполнить участок памяти - C++
Вот такой вопрос: допустим есть у нас участок памяти размером WIDTH * HEIGHT * 4, и есть структура/массив такого вида: {0xFF, 0xCC, 0xAA,...

Обращение к члену структуры - C++
В чем разница между: a-&gt;b и a.b

Обращение к памяти - C++
есть процедурка замены определения символа с номером num из банка bank на символ, образ которого записан в масиве crr; void *kods(char...

Обращение по адресу к элементам структуры - C++
Есть структура fs: struct fs { f_element; s_element; ... n_element; }; Есть массив указателей на...

GDB обращение к памяти - C++
Прошу прощения за может глупый вопрос, но как такое может быть (gdb) print _params.DirectReplies $18 = true (gdb) print...

2
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
20.02.2011, 12:34 #2
Пробовали отдебажить пакет, на котором возникает такая ошибка? Посмотрите его содержимое.
0
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.02.2011, 06:31  [ТС] #3
Да я ему записи даже закидывал расширения .pcap. Все нормально работает. Т.е либо дело в libpcap(маловероятно), либо в моей работе с packet, получаемом с pcap_next()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2011, 06:31
Привет! Вот еще темы с ответами:

Прямое обращение к памяти - C++
Доброго всем времени суток. Товарищи, помогите пожалуйста найти литературу для компилятора DJGPP. Точнее для особенностей данного...

Выделение памяти и обращение к ней - C++
Здравствуйте! Вопрос таков: как обратиться к конкретным участкам памяти, если размер в байтах не равен стандартным размерам типов?...

Почему обращение к недоступному адресу в памяти - C++
Почему при проверке кода(компиляции) выскакивает сообщение :&quot;Недостаточный размер массивов или обращение по недоступному адресу в памяти&quot; ?...

Обращение к структуре в классе с выделением памяти - C++
Добрый день уважаемые форумчане. Столкнулся с такой проблемой. Есть класс: class Components { struct comps{ // -- База компонентов ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru