![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
rich |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Задача:
Написать консольную утилиту которая получает файл по сети, обрабатывает его неким образом и завершается. Реализация: main.cpp: Раскрывающийся текст
check.cpp: Раскрывающийся текст
нашёл где-то filedownloader.cpp: Раскрывающийся текст
Так работает. Не знаю что, но что-то мне не нравится. А вам? |
|
|
![]() |
lanz |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Из некритичного/отсутствующего.
1.
cck не удаляется. Можно объявить локальной переменной(не указателем). 2. fd не удаляется (или не видно где удаляется) 3. "URL_TO_FILE" hardcoded. Вообще мне все нравится, но я бы делал скачку файла отдельно, например через curl, а прога обрабатывала уже скачаный файл через pipe или еще как. |
|
|
rich |
![]()
Сообщение
#3
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Из некритичного/отсутствующего. 1.
cck не удаляется. Можно объявить локальной переменной(не указателем). 2. fd не удаляется (или не видно где удаляется) 3. "URL_TO_FILE" hardcoded. Вообще мне все нравится, но я бы делал скачку файла отдельно, например через curl, а прога обрабатывала уже скачаный файл через pipe или еще как. Как правильно или где правильно удалять fd? Если удаляю в слоте, по завершению обработки, valgrind выдаёт следующее: Раскрывающийся текст Цитата ==25339== HEAP SUMMARY: ==25339== in use at exit: 104,418 bytes in 953 blocks ==25339== total heap usage: 42,329 allocs, 41,376 frees, 4,076,005 bytes allocated ==25339== ==25339== LEAK SUMMARY: ==25339== definitely lost: 3,682 bytes in 24 blocks ==25339== indirectly lost: 75,566 bytes in 310 blocks ==25339== possibly lost: 0 bytes in 0 blocks ==25339== still reachable: 25,170 bytes in 619 blocks ==25339== suppressed: 0 bytes in 0 blocks ==25339== Rerun with --leak-check=full to see details of leaked memory ==25339== ==25339== For counts of detected and suppressed errors, rerun with: -v ==25339== ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 1 from 1) При этом иногда программа завершается так: Раскрывающийся текст
а в gdb на 15й раз завершилась так: Раскрывающийся текст
Можно, конечно, скрестить ужа с ежом (bash с QT). Наверно, например, так: .и убрать вовсе класс FileDownloader, но хочеться только средствами QT :) Сообщение отредактировал rich - 7.8.2015, 23:15 |
|
|
lanz |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Как правильно или где правильно удалять fd? Используйте deleteLater. С обычным delete объект удаляется, а потом управление возвращается в fileDownloaded уже удаленного объекта. Цитата Можно, конечно, скрестить ужа с ежом (bash с QT). Не вижу в этом ничего предосудительного ![]() Цитата но хочеться только средствами QT ![]() Но зачем? |
|
|
rich |
![]()
Сообщение
#5
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Iron Bug |
![]()
Сообщение
#6
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
lanz |
![]()
Сообщение
#7
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: ![]() ![]() ![]() |
Цитата а так, баш есть далеко не на всех системах. А кто говорит про баш? ![]() http://curl.haxx.se/download.html |
|
|
rich |
![]()
Сообщение
#8
|
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 123 Регистрация: 1.3.2008 Пользователь №: 109 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
Цитата Можно, конечно, скрестить ужа с ежом (bash с QT). Не вижу в этом ничего предосудительного ![]() Цитата но хочеться только средствами QT ![]() Но зачем? если кроссплатформа не нужна, то, возможно, и незачем. а так, баш есть далеко не на всех системах. Как, у вас ещё нет баша? |
|
|
||
Iron Bug |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
Как, у вас ещё нет баша? юзеры выбирают то, что им удобнее и привычнее. они ради твоей поделки точно не будут ставить какой-нить cygwin или unix utils. они просто не станут пользоваться поделкой. кроссплатформенность означает не только код, но и нативность в рамках той оси, на которой работает программа. использование родных интерфейсов и стандартных утилит. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 25.5.2025, 11:03 |