Есть кто-нибудь, кто работал с QT 3.2.1 для Windows?
Я пытаюсь выяснить насколько подходит субж для реализации проета. Система клиент-сервер, с активной работой с БД. Что-то уже реализовано с использованием QT. Попробовал протестировать на наличие утечек памяти с помощью функций crtdbg.h — получил приличный дампинг, причем при отключении-подключении клиентов он растет.. Стал проверять первый tutorial (там создается окно с кнопкой) — утечки(

). В ньювсгроупах trolltech народ говорит, что утечек быть не должно, что функции crt — это не метод проверки. Попробовал Memory Validator — утечки те же.
PS
Может быть я не по адресу обратился..
Здравствуйте, Karamat, Вы писали:
K>Есть кто-нибудь, кто работал с QT 3.2.1 для Windows?
K>Я пытаюсь выяснить насколько подходит субж для реализации проета. Система клиент-сервер, с активной работой с БД.
Работал с версиями 2.x вплоть до самой последней, правда не с БД.
K>Что-то уже реализовано с использованием QT. Попробовал протестировать на наличие утечек памяти с помощью функций K>crtdbg.h — получил приличный дампинг, причем при отключении-подключении клиентов он растет.. Стал проверять первый K>tutorial (там создается окно с кнопкой) — утечки(
). В ньювсгроупах trolltech народ говорит, что утечек K>быть не должно, что функции crt — это не метод проверки. Попробовал Memory Validator — утечки те же.
Не знаю как реальные утечки, но Rational Purify выдавал по крайней мере warnings в некоторых местах.
Если же интересует общее мнение о Qt — то для реализации мультиплатформенного(!!!) приложения imho довольно неплохая вещь. С иерархией классов удобно работать, интересная система сигналов/слотов. Недостатки — если не хватает функциональности более или менее близкой к системе, то можно иногда просто одуреть пытаясь сделать, то что надо.
K>PS
K>Может быть я не по адресу обратился..
Здравствуйте, Karamat, Вы писали:
K>Есть кто-нибудь, кто работал с QT 3.2.1 для Windows?
K>Я пытаюсь выяснить насколько подходит субж для реализации проета. Система клиент-сервер, с активной работой с БД. Что-то уже реализовано с использованием QT. Попробовал протестировать на наличие утечек памяти с помощью функций crtdbg.h — получил приличный дампинг, причем при отключении-подключении клиентов он растет.. Стал проверять первый tutorial (там создается окно с кнопкой) — утечки(
). В ньювсгроупах trolltech народ говорит, что утечек быть не должно, что функции crt — это не метод проверки. Попробовал Memory Validator — утечки те же.
K>PS
K>Может быть я не по адресу обратился..
Я работал с Qt 3.0.4, сейчас использую 3.1.1. Я сейчас веду несколько модулей, которые будучи написанные на Qt, используются как в чисто Win, так и в кроссплатформенном комплексе. Вот и основной плюс: твой код (правильно написанный) портируется с платформы на платформу путем простой перекомпиляции.
Не могу точно без кода сказать, что у тебя за утечки, навскидку один из вариантов: попробуй устанавливать в параметрах конструктора QWidget флажок Qt::WDestructiveClose, тогда все ресурсы, используемые обьектом будут освобождаться сразу после его закрытия.
Здравствуйте, Karamat, Вы писали:
K>Есть кто-нибудь, кто работал с QT 3.2.1 для Windows?
K>Я пытаюсь выяснить насколько подходит субж для реализации проета. Система клиент-сервер, с активной работой с БД. Что-то уже реализовано с использованием QT. Попробовал протестировать на наличие утечек памяти с помощью функций crtdbg.h — получил приличный дампинг, причем при отключении-подключении клиентов он растет.. Стал проверять первый tutorial (там создается окно с кнопкой) — утечки(
). В ньювсгроупах trolltech народ говорит, что утечек быть не должно, что функции crt — это не метод проверки. Попробовал Memory Validator — утечки те же.
Нет это глюки валидаторов или твои. Судя по исходникам в Qt есть конфигурация для тестирования с Insure++ и как trolltech утверждает они все регулярно тестируют. (Кто не в курсе insure++ это принципиально другого уровня leak tracer т.к. он в исходный код проверки вставляет, а не смотрит только на API как bounds checker)
У нас сейчас на Qt сервер есть(уж очень мне ихние socket-ы понравились), очень стабильно и хорошо работает, никаких leak-ов не видно.
Так что это либо у тебя какой то глюк либо глюк валидоторов либо ты ее неправильно собрал.
Там у Qt есть такая очень плохая особенность что dll собирается только одна, т.е. у тебя либо релиз либо debug) и если ты собрал релизную Qt то она за собой тащит msvcrt.dll, а твоя программа в debug тащит msvcrtd.dll, и соотвественно у тебя получаются 2 разных распределителя памяти в проге которые производят тучу фальшивых ликов.
Т.е. если у тебя например у класса конструктор инлафновый а деструктор виртуальный, программа debug-овая а Qt релизный то получается что память под класс выделяется с помощью msvcrtd т.к. конструктор inline, а удаляется вся эта хрень где то в недрах Qt где все дается для стирания msvcrt.dll и получается такая странная вещь что в одном менеджере память выделена но не удалена, а в другом удаляется левый блок.
Проверить этот эффект весьма просто во время работы посмотри загружены в память обе msvcrt.dll и msvcrtd.dll. Если да то в этом у тебя и проблема. Лечится это игрой с настройками. Нужно сделать так называемый half release. Т.е. прогу с debug инфо, но релизным рунтаймом.
Если так то ко мне обращайся я тебе вышлю шаблон для генерации dsp который использует qmake, для VC который позволяет нормально такие вещи обходить.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев