Что такое 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;
удачи! :)