|
|
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Vlad F, у тебя есть какая-то веская причина зомби ссылки хранить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 01:06 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 01:30 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Да ну вас в попу Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 01:53 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Vlad F И это всего лишь твое неподкрепленное частное мнение.)) Лет пятнадцать назад я разработал одну программу, предназначенную работать 24x7x365. Через некоторое время тогдашний начальник решил усилить надёжность и сказал другому программисту сделать программу-монитор, которая каждые несколько минут проверяла бы, работает ли моя программа, и если она упала - перезапускала бы её. В итоге выяснилось, что программа-монитор каждые неделю-две падает, в то время как моя программа спокойно продолжает работать. Так вот, я не сомневаюсь, что автор того монитора был бы с тобой согласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 09:26 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
makhaon Vlad F, у тебя есть какая-то веская причина зомби ссылки хранить? :) Дык, в общем случае нельзя будет сказать на сколько они в этом случае зомби.)) Говорю же, и концептуально и стилистически ни один из этих подходов не лучше. Оба хуже, имхо. И уж, как минимум, один другого стоит.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 11:15 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
softwarer Vlad F И это всего лишь твое неподкрепленное частное мнение.)) Лет пятнадцать назад я разработал одну программу, предназначенную работать 24x7x365. Через некоторое время тогдашний начальник решил усилить надёжность и сказал другому программисту сделать программу-монитор, которая каждые несколько минут проверяла бы, работает ли моя программа, и если она упала - перезапускала бы её. В итоге выяснилось, что программа-монитор каждые неделю-две падает, в то время как моя программа спокойно продолжает работать. Так вот, я не сомневаюсь, что автор того монитора был бы с тобой согласен :) А в огороде бузина, а в Киеве - дядька.))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 11:16 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Я думаю от перестановки действий, ничего не меняется. ВсеРазумный Да ну вас в попу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 18:28 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
white_nigger, То есть проблема в дурочке программисте, а не в функции. Ибо уничтожив объект, у него бы осталась ссылка на объект, при использование в последующем, с вылетом в AV Хватит сосать проблемы из пальца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 19:18 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный То есть проблема в дурочке программисте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 19:48 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
white_nigger что ты хотел показать тем постом с дизассемблером? От переустановки действий, слагаемое не меняется. 22126998 white_nigger Абсолютно тоже самое можно сказать о необходимости использования костыля FreeAndNil Вообще, бездумное освобождения объекта - признак слабоумия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 20:17 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Если мы вешаем динамически созданные объекты на форму - owner, то форма в конце программы уничтожит данные объекты. И освобождение не нужно. Но если мы планируем динамическое GUI с перезагрузкой и добавлением элементов GUI то имеет смысл, удалять объекты, дабы не загружать всю память программы. И помечать ссылки в массиве объектов - null маркером. Дабы понимать какой сейчас объект может использоваться И не нарваться на AV от уже освобождённого объекта. Будет полезен вызов FreeAndNil ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 20:20 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, да-да, а ещё с дури можно и хрен сломать. Разница в коде есть, если не видишь - учи ассемблер. PS: и тебе не стоит мне объяснять как работают визуальные компоненты))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 21:12 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
white_nigger, Нет никакой разницы. Когда объект освобождён, хранить ссылку не имеет смысла. Это мёртвый объект, вызвав у которого метод\свойства. Будет тот же самый AV. И уж тем более не имеет смысла, в каком порядке обнулять ссылку на объект. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. Имеем удаление через Free с последующим обращением к объекту. И аналогично FreeAndNil EAccessViolation : Access violation at address 005E929F in module 'Project1.exe'. Read of address 000003CC EAccessViolation : Access violation at address 005E929F in module 'Project1.exe'. Read of address 000003CC EAccessViolation : Access violation at address 005E8F57 in module 'Project1.exe'. Read of address 00000010 Прекрасно видим, что функция FreeAndNil вообще не причём. И мешает только тому, у кого руки из попы. 0 разница. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:07 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Самый лучший отладчик в мире. По break выкидывает вообще не туда, куда надо. Это обречённость неумелых рук, из попы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:10 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:12 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Вот такой баг, с не обнулённой переменной. Вы будете всей командой - пол года искать. Так что кушайте функцию FreeAndNil и не парьтесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:32 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Тут прибежали санитары и зафиксировали нас. (с) ВСВ)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:40 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Так что кушайте функцию FreeAndNil и не парьтесь. "Люди делятся на две категории: те, кто делает бэкапы, и те, кто уже делает бэкапы" Было время, когда FreeAndNil не было. Она появилась довольно поздно, не то в пятой, не то в шестой дельфе. Поэтому дельфи-программисты делились на тех, кто использует аналогичную самописную подпрограмму, и на тех, кто уже использует аналогичную самописную подпрограмму. Я был из первых - потому что ещё до дельфы, со времён работы на Си, крепко усвоил, насколько это облегчает надёжное кодирование. А потом... со всем, что разрабатывают люди, происходит одна и та же история. Сначала какого-то инструмента нет, и без него довольно плохо. Технология развивается, находит хорошее решение очередной задачи (тот самый инструмент), все счастливы. Потом вырастает поколение, которому этот инструмент и его результаты уже привычны, а вот с проблемами из-за его отсутствия они на своей шкуре не сталкивались. И они начинают говорить, что инструмент плохой, и без него лучше. Дальше они начинают писать без него, и либо умнеют, либо изобретают какой-нибудь плохой велосипед вроде тех, которыми пользовались до разработки этого инструмента, и в зависимости от степени ослиности упрямства держатся за него, порой долго, порой очень долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:44 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
Не помогут санитары. Пациент уже многократно сбегал на свободу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:44 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный, А представь, что у тебя дальше код идёт: Код: pascal 1. 2. И теперь прогони свои тесты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2020, 23:55 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Вот такой баг, с не обнулённой переменной. Вы будете всей командой - пол года искать. Так что кушайте функцию FreeAndNil и не парьтесь. Такое никогда не возникнет если следовать поставленным парадигмам при разработке архитектуры ПО... 1) Кто объект создал - тот его и разрушает. 2) Создал в конструкторе - разрушь в деструкторе. 3) Создал в методе, разрушь в том же методе. 4) Написал Create пиши сразу Free Все остальные случаи укладываются в эти 4 пункта, если правильно проектировать классы и абстракции... А если кто-то в команде так напишет, будет уволен без выходного пособия лишен премии из-за недостатка квалифицированных кадров, ибо не понимает что делает... Код: pascal 1. 2. 3. Для меня FreeAndNil бессмысленный... реальное его использование 0.1% для глобальных синглтонов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 00:45 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
X-Cite Такое никогда не возникнет если следовать поставленным парадигмам при разработке архитектуры ПО... Интересно, как же следовать этим парадигмам ну хотя бы для разработки простейшего гуёвого Hello, world. Application.CreateForm им не соответствует, да и другие способы создания окон - тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 01:58 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
alekcvp ВсеРазумный, А представь, что у тебя дальше код идёт: Код: pascal 1. 2. И теперь прогони свои тесты. Да никогда в жизни такого кода у тебя не будет, потому что ты в одном месте освободишь. А в другой процедуре получишь по попе своей шаловливой. Вот и делай теперь на каждое обращение проверку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 02:37 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
X-Cite, Как видим, он вообще не бессмысленный. Ибо задача приведена на пальцах. А на деле как я уже сказал выше, освобождение может произойти раньше. Тупо просто класс крашнулся выйдя из процедуры - потеряв ссылку. И в конце концов в другой процедуре ты получил по попе. Да, в целях экономии, делается PPointer, что бы мы знали что происходит с другой переменной. А если другая переменная через FreeAndNil получила null то там не придётся потом всей командой пол года искать в чём же проблема. Ибо отладчик скажет где у нас нет данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 02:39 |
|
||
|
Улучшил FreeAndNil. Можете не благодарить.
|
|||
|---|---|---|---|
|
#18+
ВсеРазумный Да никогда в жизни такого кода у тебя не будет, потому что ты в одном месте освободишь. А в другой процедуре получишь по попе своей шаловливой. Вот и делай теперь на каждое обращение проверку. Если ты не следишь за логикой своего приложения и у тебя в одном месте может освободиться объект, который используется в другом, при этом ты никак его текущее состояние не проверяешь - ну, ССЗБ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2020, 02:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39954243&tid=2038337]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 365ms |

| 0 / 0 |
