Whats SIGSEGV, Ошибка сегментации в Qt - PullRequest
11 голосов
/ 16 марта 2010

У меня есть программа Qt, которая отображает данные, которые она получает по UDP. Работает нормально около 30 секунд, но через некоторое время выдает ошибку сегментации и вылетает. Эти 30 секунд также не фиксируются.

Я использовал отладчик и получил это:

Program received signal SIGSEGV, Segmentation fault.
0x003c6fd4 in ?? () from /usr/lib/libQtGui.so.4

Может кто-нибудь сказать мне, где может быть ошибка?

Ответы [ 3 ]

13 голосов
/ 16 марта 2010

Это означает, что ваша программа пыталась получить доступ к памяти, которая ей не принадлежит. По сути, у вас есть указатель, который содержит недопустимое значение где-то в вашем коде - общий источник этой ошибки - разыменование пустого указателя.

2 голосов
/ 16 марта 2010

Вам нужен отладчик (и убедитесь, что у вас есть двоичные файлы с отладочной информацией) - проверьте трассировку стека на месте сбоя. Я бы предположил, что где-то появится ваш собственный код, и с этого следует начать. Проверьте распределение, размеры буфера…

1 голос
/ 19 февраля 2014

Убедитесь, что вы выделили массив, которому вы назначаете данные.

У меня постоянно была эта ошибка, потому что я не выделял.

Пример, который я использовал:

char* m_tempBuff;
*(int*) m_tempBuff = i;

Последнее изменилось на, и это сработало:

char m_tempBuff[sizeof(int)];
*(int*) m_tempBuff = i;

Желаем удачи! :)

...