![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| n4nv4n |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Есть ф-ция получения mac-адреса, которая возвращает структуру:
Я пытаюсь вывести через printf элементы массива
На что получаю ошибку сегментирования, но если я делаю вывод циклом ниже, то все хорошо:
При отладке через gdb, в случаи с оператором printf (без цикла) ошибка в строке
это строка из ф-ции getmac, а addrs это эта структура которая возвращается. Почему так проиcходит? Это сообщение отредактировал(а) n4nv4n - 26.10.2009, 11:54 |
||||||||
|
|||||||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Так ошибка не на операторе printf? А функция вызывается до или после? Ты бы код поподробнее привел... -------------------- ... |
|||
|
||||
| n4nv4n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
Earnest код большой. Вообщем проблема ушла когда я перестал использовать ссылки на структуры.
Т.е. ф-ция getmac возвращала ссылку на структуру struct ethip *getmac, теперь я поменял все, т.е. struct ethip getmac и все пучком. Сама ф-ция getmac вызывалась до, т.е. она возвращала ( по старому ) ссылку на структуру и потом я вывод делал принтом ( в main ), после чего вылетало, я компилил с -ggdb опцией, потом сморел через отладчик по шагам о прога вылета не на принте а на ф-ции memcpy(addrs->ar_sha, arp_hdr->ar_sha, 6); в ф-ции getmac, но если я делал принт в getmac() после того как memcpy скопировало байты, а в main из которой вызывал getmac убрал принты, вывод был без ошибок. Мне самум проста эта ситуация не ясна, или это фишки компилятора, хз. Все решилось отказом от возврата указателей на структуру.
Этот код при исполнении возвращает ошибку сегментирования. Я наверняка что та делаю нитак - Это сообщение отредактировал(а) n4nv4n - 28.10.2009, 10:17 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
память не выделяешь под указатель
|
|||
|
||||
| n4nv4n |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 26.10.2009 Репутация: нет Всего: нет |
zim22 спс, фурикает.
Это сообщение отредактировал(а) n4nv4n - 28.10.2009, 17:54 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |