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

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

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

Сообщений: 2130



Просмотр профиля
« Ответ #15 : Август 15, 2016, 09:15 »

Вот она, сучка

И зачем при наличии qt использовать сишные споособы работы ?
just for lulz
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #16 : Август 15, 2016, 09:20 »

Довольно-таки странно, что до сих пор не прогнали через valgrind.
Он на OSX не очень - захлебывается при выделениях 500 метров и выше. Да и что там хотим увидеть - "разрушен блок памяти <адрес>"? Это мне и так бы сообщили в gdb, но в данном случае этого нет.
Имхо, пускай захлёбывается. Уж лучше он будет сутки искать ошибку, чем это буду делать я трое суток. Я это время потрачу на что-нибудь другое.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Август 15, 2016, 09:52 »

И зачем при наличии qt использовать сишные споособы работы ?
Да уж, такой код иначе и не назовёшь.
Ну как сказать.. А как бы написал я при отсутствии Qt? Наверное тоже бы читал ifstream в буфер, тоже бы отсекал вындозный конец строки - в общем принципиально ничем не лучше

Имхо, пускай захлёбывается. Уж лучше он будет сутки искать ошибку, чем это буду делать я трое суток. Я это время потрачу на что-нибудь другое.
Ну в данном случае он бы ничего не нашел - утечек нет, куча не бита. В свое время мой интерес к valgrind быстро охладел когда я познакомился с гораздо более приятными "Instruments" (Memory Leak и др)
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #18 : Август 15, 2016, 10:27 »

Есть экспериментальный инструмент SGCheck, который включается опцией --tool=exp-sgcheck, возможно, он бы вам помог.
А тут пример того, как безопасно можно было бы прочитать строку http://en.cppreference.com/w/cpp/string/basic_string/getline
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #19 : Август 15, 2016, 10:58 »

А тут пример того, как безопасно можно было бы прочитать строку http://en.cppreference.com/w/cpp/string/basic_string/getline
Конечно прочитать в std::string было бы аккуратнее. Вообще осуждать др программиста писавшего этот код легко. Но при этом не стоит забывать - "плохой" код реализует не слабый кусок ф-ционала. В аттаче пример файла что он читает. И у меня как-то не возникает желания переписать это чтение с нуля  Улыбающийся Ну заменю я массив на контейнер и strlen/strtok на что-то получше - так это пол-процента от всей работы (такова обычная цена умничания  Улыбающийся)
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #20 : Август 15, 2016, 11:46 »

Так ведь, не с нуля. Можно написать тестик и потихонечку выделять отдельные операции в методы и постепенно заменять их на c++ функционал. Вы, скорее всего, снова наступите на эти грабли и суммарное время потраченное на поиск ошибок превысит время, которое бы ушло на исправление этого участка кода.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #21 : Август 15, 2016, 11:53 »

Так ведь, не с нуля. Можно написать тестик и потихонечку выделять отдельные операции в методы и постепенно заменять их на c++ функционал. Вы, скорее всего, снова наступите на эти грабли и суммарное время потраченное на поиск ошибок превысит время, которое бы ушло на исправление этого участка кода.
Да, если бы найти не удалось - пришлось бы рефакторить, но это тоже совсем не дешево. A "потихонечку" (постепенно улучшать) не всегда есть возможность.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3258


Просмотр профиля
« Ответ #22 : Август 23, 2016, 18:41 »

А вас не смущает тройной (после фикса двойной) вызов strlen?
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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