crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

mezmay
  опции профиля:
сообщение 11.8.2011, 8:54
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Есть кусок кода, вылетает на последней строчке:
        QVector<QVector<SBlock<T> > > vvBlocks(m_vBlocksLength.size());

        vvBlocks[0].reserve(ceil((double)bufSize/m_vBlocksLength[0]));
        
        for(U64 i=0; i<bufSize; i+=m_vBlocksLength[0])
        {
            T min = DBL_MAX;
            T max = -DBL_MAX;

            for(U64 j=0; j < m_vBlocksLength[0] && i + j < bufSize; j++)
            {
                if(vData[i + j] > max)
                    max = vData[i + j];
                if(vData[i + j] < min)
                    min = vData[i + j];
            }
            SBlock<T> block;
            block.max = max;
            block.min = min;

            vvBlocks[0].push_back/*append*/(block);
        }

        vvBlocks[1].reserve(vvBlocks[0].size()/m_lengthCoeff); // вылетает здесь

Почему это может быть? Причем если закомментировать цикл
for(U64 j=0; j < m_vBlocksLength[0] && i + j < bufSize; j++)

то перестает вылетать, хотя в этом цикле нет ничего связанного вектором vvBlocks

Сообщение отредактировал mezmay - 11.8.2011, 9:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
mezmay
  опции профиля:
сообщение 12.8.2011, 15:03
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Ура!!! Решил проблему! Короче дело обстояло так: в потоке обрабатывался файл, и информация о ходе обработки посылалась в основной поток с помощью событий и соответственно функции QCoreApplication::postEvent(). Проблема была в том что я создавал объект события статически, а в документации сказано:

The event must be allocated on the heap since the post event queue will take ownership of the event and delete it once it has been posted. It is not safe to modify or delete the event after it has been posted.

надо было вовремя читать документацию. Спасибо тебе Алексей1153, без твоей помощи я бы наверное не обратил на это внимания!

Сообщение отредактировал mezmay - 12.8.2011, 15:05
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 25.7.2025, 7:19