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

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

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

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

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

3 ответов


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


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


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

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

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

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

последний изменился на, И это сработало:

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

удачи! :)