Дистрибутив: Branch 4.1 Версия: libqt4-4.4.0-alt3 (Сизиф) При инициализации, а именно в момент вызова: new QApplication( argc, argv ); происходит разрушение инициализированных ранее структур памяти. На приложениях основанных только на QT, а именно тех которые вызывают new QApplication( argc, argv ); в функции main() это фактически не сказывается. А вот на приложениях инициирующих QT далеко не сразу и не в main(), а даже в другом от основного потоке, это отчётливо сказывается. Проверялось путём простой инициализации и удалении, сразу. QApplication *QtApp = new QApplication( argc, argv ); delete QtApp; После чего значительная часть ключевых, ранее выделенных, структур памяти оказывалась разрушенной. На ранних версиях (до 4.3.4) этой проблемы не было. Обнаружилось также срабатывание сигналов до завершения вызова и следуйщей итерации notify(). Создавая впечатление реальной многопототочности в потоке визуализации. А это, без покрытия ресурсами, черевато. Эти проблемы проявляются у людей и на Ubuntu 8.04.
Тестовый проект в студию.
Я несколько поторопился с выводами. Просто то как 4.4 повлияло на работоспособность удивило. На самом деле new QApplication( argc, argv ); вызывается достаточно рано, хотя и не в основном потоке (так надо). Но дальнейшая работа сильно изменяется, часть данных или не грузится или теряется. Сейчас идут разборки. По факту сообщу.
Оказалось всё банальнее. В 4.4 они добавили принудительную установку локали, а именно а именно LC_NUMERIC. В случае моей программы я значение этого атрибута локали сбрасываю в "C" для обеспечения единообразия при работе и хранении вещественных чисел, а именно исключаю проблемы парсинга вещественных чисел с резделителем в '.' (23.56) на кириллических локалях. Так вот после инициализации QT все вещественные числа у меня и накрылись, в смысле дробная часть отбросилась. :)