Russian Qt Forum
Октябрь 02, 2024, 01:32 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Ошибка  (Прочитано 13631 раз)
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #15 : Июнь 06, 2013, 18:02 »

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

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #16 : Июнь 07, 2013, 11:52 »

странно, а я помню натыкался на краши в таком случае

А в каком именно Непонимающий
Может мне поможет  Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #17 : Июнь 07, 2013, 11:53 »

я ж написал в каком, даже в цитате отображено
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #18 : Июнь 07, 2013, 12:21 »

 Смеющийся извините
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #19 : Июнь 07, 2013, 15:08 »

проверил на это тестовом проекте — и правда не крашится. может я тогда еще указателю 0 присваивал или он был QPointer…
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #20 : Июнь 10, 2013, 10:26 »

проверил на это тестовом проекте — и правда не крашится. может я тогда еще указателю 0 присваивал или он был QPointer…

 Непонимающий
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #21 : Июнь 10, 2013, 10:27 »

невалидный или нулевой указатель в процедуру передаваться может. А так вроде хорошо все.

 Непонимающий можно поподробнее
« Последнее редактирование: Июнь 10, 2013, 10:32 от demaker » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #22 : Июнь 10, 2013, 12:59 »

При тесте в консоле выдал:
Код:
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.
QMutex::lock: Deadlock detected in thread 0x12b0

И еще винда выдала сообщение об ошибке(во вложенеи)
Подскажите, что это может значить?
« Последнее редактирование: Июнь 10, 2013, 13:04 от demaker » Записан
Bepec
Гость
« Ответ #23 : Июнь 10, 2013, 13:03 »

ы. Деадлок впервые? с почином Веселый

PS мутексы пересекаются и умирают друг в друге.
Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #24 : Июнь 10, 2013, 13:05 »

ы. Деадлок впервые? с почином Веселый

PS мутексы пересекаются и умирают друг в друге.

А первые четыре это, что???
Как мне поймать этот баг?
« Последнее редактирование: Июнь 10, 2013, 13:09 от demaker » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #25 : Июнь 11, 2013, 16:35 »

Нашел часть кода, в котором возможна ошибка
Код:
if(type_plot == ANALOG_TYPE)
    {
        y_max_primary = ct->getMaxValue(fn_dat+".DAT", num_channel,true);
        y_min_primary = ct->getMinValue(fn_dat+".DAT", num_channel,true);
        delta_scale_primary = calc_delta_scale(ct->getMaxValue(fn_dat+".DAT", num_channel,true),ct->getMinValue(fn_dat+".DAT", num_channel,true));
        y_scale_test_primary = (this->size().height() - 20)/(2*delta_scale_primary);
        optimum_scale_primary = calc_optimum_scale_primary();

        y_max_secondary = ct->getMaxValue(fn_dat+".DAT", num_channel,false);
        y_min_secondary = ct->getMinValue(fn_dat+".DAT", num_channel,false);
        delta_scale_secondary = calc_delta_scale(ct->getMaxValue(fn_dat+".DAT", num_channel,false),ct->getMinValue(fn_dat+".DAT", num_channel,false));
        y_scale_test_secondary = (this->size().height() - 20)/(2*delta_scale_secondary);
        optimum_scale_secondary = calc_optimum_scale_secondary();

        if( *(ct->DynamicCfg->AnalogChannels[num_channel].PS) == "P" )
        {
            unit = *(ct->DynamicCfg->AnalogChannels[num_channel].Unit);
            ((plotWidget*)(this->parent()))->ppw->namePlot->setText(*(ct->DynamicCfg->AnalogChannels[num_channel].Name) + "," +*(ct->DynamicCfg->AnalogChannels[num_channel].Unit));

            data = new QwtPointArrayData(ct->getTimeDataVector(fn_dat+".DAT"),
                                         ct->getAnalogDataVector(fn_dat+".DAT", num_channel,true),
                                         ct->DynamicCfg->NumSamples);

            //setAxisScale(QwtPlot::yRight, -(this->size().height() - 20)/(2*optimum_scale_primary), (this->size().height() - 20)/(2*optimum_scale_primary)); //!!!!!!!!!!Если оставить
        }
        if( *(ct->DynamicCfg->AnalogChannels[num_channel].PS) == "S" )
        {
            unit = *(ct->DynamicCfg->AnalogChannels[num_channel].Unit);
            ((plotWidget*)(this->parent()))->ppw->namePlot->setText(*(ct->DynamicCfg->AnalogChannels[num_channel].Name) + "," + *(ct->DynamicCfg->AnalogChannels[num_channel].Unit));

            data = new QwtPointArrayData(ct->getTimeDataVector(fn_dat+".DAT"),
                                         ct->getAnalogDataVector(fn_dat+".DAT", num_channel,false),
                                         ct->DynamicCfg->NumSamples);

            //setAxisScale(QwtPlot::yRight, -(this->size().height() - 20)/(2*optimum_scale_secondary), (this->size().height() - 20)/(2*optimum_scale_secondary));//!!!!!!!!!!Если оставить
        }
        else
        {
        }

        enableAxis(QwtPlot::yRight,true);
        enableAxis(QwtPlot::yLeft,false);

        setAxisAutoScale(QwtPlot::yRight,true); // //!!!!!!!!!!А это убрать, то через некоторое время работы вылетает

        setAxisScaleDraw(QwtPlot::yRight,new MyScaleDraw());
        setAxisScale(QwtPlot::xBottom,start_time,end_time);

        setCanvasBackground(QColor(Qt::gray));

...

double Plot::calc_delta_scale(double max, double min)
{
    double delta;
    double abs_min = qFabs(min);

    if(max >= abs_min)
    {
        delta = max;
    }
    else
    {
        delta = abs_min;
    }
    return delta;
}


double Plot::calc_optimum_scale_secondary()
{
    double tmp;
    for(int j = 0; j < (int)(sizeof(vec_scales)/sizeof(double)); j++)
    {
        if((y_scale_test_secondary >= vec_scales[j])&&(y_scale_test_secondary < vec_scales[j+1]))
        {
            tmp = vec_scales[j];
        }
    }
    return tmp;
}

Не могу понять почему  Непонимающий

Может
Код:
  setAxisScale(QwtPlot::yRight, -(this->size().height() - 20)/(2*optimum_scale_primary), (this->size().height() - 20)/(2*optimum_scale_primary)); //!!!!!!!!!!Если оставить
убрать из конструктора
« Последнее редактирование: Июнь 11, 2013, 16:54 от demaker » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #26 : Июнь 11, 2013, 16:56 »

если попадает в элс, то для data не выделяется память. подозреваю, что где-то в другой части программы написано delete data, отсюда и обращение по невалидному указателю.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #27 : Июнь 11, 2013, 17:27 »

Да нет все норм.
т.к. есть
Код:
 curve->attach(this);
 curve->setData(data);
и они сами все удаляют
« Последнее редактирование: Июнь 11, 2013, 17:36 от demaker » Записан
demaker
Птица говорун
*****
Offline Offline

Сообщений: 960


Просмотр профиля
« Ответ #28 : Июнь 20, 2013, 16:23 »

Скажите,а возможен такой вариант.
У меня в QtSDK mingw32, а у меня 64-битная ОС и поэтому возникает ошибка???
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #29 : Июнь 20, 2013, 16:49 »

нет
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.101 секунд. Запросов: 23.