LINUX.ORG.RU

Переменная которая ничего не делает ломает программу.


0

2
class ViewStat : public KBGame{
    Q_OBJECT
public:
    ViewStat(QWidget *parent = 0);
    //int rT,rS;
    std::vector< timeScore > dataScore;
    void paintEvent(QPaintEvent *);
};

Если розкоментировать rT,rS; программа падает. Дебагер выдает то что я понять не могу (куски ассемблеровского кода).

Что делать? Как исправлять?


где-то портишь память. Можно попробовать поискать с valgrind где именно

mashina ★★★★★
()

Если розкоментировать rT,rS; программа падает

вполне возможно из-за кривой системы сборки возникает бинарная несовместимость.

crowbar
()
Ответ на: комментарий от yoghurt

Запустил в нем. Программа не падает. Без него - падает.

Убрал qWarning (в совсем другом месте кода). Вроде заработало.

knotri
() автор топика
Ответ на: комментарий от knotri

Запустил в нем. Программа не падает. Без него - падает.

А читать вывод valgrind'а пробовал?

mashina ★★★★★
()
Ответ на: комментарий от Adonai

Я вообще убрал весь код из cpp. (Оставил только пустой конструктор).

ViewStat::ViewStat(QWidget *parent) : KBGame(parent){}

Впрочем проблема сама как то решилась. Точнее я надеюсь на это.

knotri
() автор топика
Ответ на: Ты сам всё знаешь от yoghurt

ты сегодня в ударе :)

ТС, в зависимости от того, чем собираешь - решением может быть снос всего каталога сборки и пересобрать с 0. qmake, например, достаточно кривое поделие, которое, иногда, отказывается пересобирать изменившиеся файлы

Stil ★★★★★
()

ну правильно. структура класса же меняется, лол. у dataScore меняется оффсет.

anonymous
()
Ответ на: комментарий от anonymous

у dataScore меняется оффсет.

Ну да, меняется. Но я не где не обращаюсь к этим переменным вне класса.

А потом я вообще убрал любой код оставив только конструктор.

knotri
() автор топика
Ответ на: комментарий от knotri

Ну да, меняется. Но я не где не обращаюсь к этим переменным вне класса.

Мб была реализация некоторых методов в объявлении самого класса? Тогда они могли остаться в других объектниках.

mashina ★★★★★
()
Ответ на: комментарий от knotri

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

А он не в хедере. По крайней мере, точно не в том месте. Два новых инта в классе, особенно если их никто не трогает, точно ничего не ломают.

Они лишь меняют расположение всяких потрохов в памяти. Видимо, ты просто херишь определённый кусок в ней и если раньше это ни к чему не приводило, то теперь приводит. И радуйся, что тебе удалось это выявить.

yoghurt ★★★★★
()
Ответ на: комментарий от nickionn

Ну чтобы полностью выпилить мертвые языки.
А еще многие говорят, что софт на сях/плюсах сегфолтится - значит и петоновский тоже.

Lavos ★★★★★
()
Ответ на: комментарий от z00ke

ошибка программного обеспечения, возникающая при попытке обращения к недоступным для записи участкам памяти либо при попытке изменения памяти запрещённым способом

Прочитал и что?

Lavos ★★★★★
()
Ответ на: комментарий от Lavos

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

z00ke
()
Ответ на: комментарий от z00ke

Так я не про софт на питоне, а про сам питон. Его же криворукие сишники писали. И когда падает в сегфолт интерпретатор - скрипт, который на нем в данный момент выполняется, тоже упадет. Теперь понятно?
А еще может что-нибудь системное засегфолтнуться, ОС ведь тоже не на питоне...

Lavos ★★★★★
()
Последнее исправление: Lavos (всего исправлений: 2)
Ответ на: комментарий от Lavos

Теперь понятно?

Я это все понимаю побольше твоего.

Его же криворукие сишники писали.

Пруфы будут? Что-то я ни разу не видел чтобы интепретатор сегфолтился.

z00ke
()
Ответ на: комментарий от z00ke

Ну и я тоже сколько пользую софт на сях - тоже ниразу не видел сегфолтов.

Lavos ★★★★★
()
Ответ на: комментарий от z00ke

Серьёзно? У пейтона больше не подсчёт ссылок с костылями пытающимися найти циклические ссылки? Там теперь перемещающий сборщик мусора умеющий снижать фрагментацию памяти? Или хотя бы mark & sweep? С какой версии?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Гораздо более логичено когда потоками управляет ОС, а не сама программа в конечном итоге, к тому же GIL безопасен, в отличии от..

z00ke
()
Ответ на: комментарий от z00ke

Загибаем пальцы: lua — mark & sweep, ruby — mark & sweep, java — mark & sweep, go — mark & sweep. У haskell так и вовсе перемещающий gc. А подсчёт ссылок в obj-c есть.

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

Кстати есть мнение, что маркосвип и гц вообще это костыль из-за отсутствия нормальных виков, собственно это они нужны, а не автосборщик. В том же луа я огребаю кучу возни с со слабыми таблицами и лайфтаймами просто из-за асинхронности сборки и двухэтапной коллекции и ресурректов. В объективе все просто и синхронно, никаких депров не испытываю :)

arturpub ★★
()
Ответ на: комментарий от Adonai

Говорите русским языком на русско-язычном форуме.

BattleCoder ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.