Что такое SIGSEGV, ошибка сегментации в Qt

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

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

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

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

Ответ 1

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

Ответ 2

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

Ответ 3

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

У меня постоянно была эта ошибка для нераспределения.

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

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

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

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

Удачи!:)