|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
Добрый день, не совсем понимаю, не будет ли в приведённом ниже коде утечки памяти и следует ли удалять объект FMyObject? Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 20:45 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
wsnet, На этот вопрос может ответить только функция getMyObject ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 20:56 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
wsnet, при удалении (освобождении) формы, она автоматически удалит все компоненты, владельцем (owner) которых является. Объект, который (ссылка на объект) является полем формы, если это не компонент, владельцем которого является форма, автоматически не удалится, так что нужно его удалить, чтобы освободить память. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 21:34 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
wsnet Добрый день, не совсем понимаю, не будет ли в приведённом ниже коде утечки памяти и следует ли удалять объект FMyObject? Если объект приходит из GetMyObject, то по завершении работы его следует отдать с помощью PutMyObject. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 22:03 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
softwarer, а можно поподробнее применительно к коду моему как это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 05:41 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
Если удалю MyObject таким образом это будет корректно, а в конструкторе формы предварительно nil присвою объекту? (в GetMyObject создается экземпляр класса просто через Create). Код: 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. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 06:12 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
wsnet, wsnetа в конструкторе формы предварительно nil присвою объекту? Это не нужно делать. Конструктор это и так делает. ЭмбаркадероThis allocates storage for the new object, sets the values of all ordinal fields to zero, assigns nil to all pointer and class-type fields , and makes all string fields empty. http://docwiki.embarcadero.com/RADStudio/Sydney/en/Methods_(Delphi)#Constructors wsnet Код: pascal 1. 2.
Проверка не нужна, она и так делается в коде FreeAndNil, посмотрите реализацию FreeAndNil и вызываемой ею Free. Совет, почитайте какой-нибудь учебник. Видно, что у вас есть пробелы знаний насчёт базовых вещей. Если прочитать какой-нибудь учебник, то можно сразу много пробелов в знаниях закрыть. Например, старая, но во многом не устаревшая книжка "Стив Тейксейра, Ксавье Пачеко - Delphi 5. Руководство разработчика." - "Том 1. Основные методы и технологии программирования". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:22 |
|
Нет ли утечки памяти
|
|||
---|---|---|---|
#18+
wsnet, 1) у вас 2 переменные ссылаются на один и тот же объект. Зачем это? На мой взгляд это не нужно, уберите локальную переменную MyObject, оставьте только поле формы. 2) Смотрите, вы создаете форму, а потом, сразу после создания, проверяете некое условие. Там, где вы будете вызывать в коде TMyForm.Execute, не будет видно, что это условие используется, соответственно, часть логики кода скрыта, неочевидна. Передавайте это условие, если это удобно, как параметр функции, чтобы это было явно. Например вот так: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 13:50 |
|
|
start [/forum/topic.php?fid=58&fpage=14&tid=2037100]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 272ms |
total: | 424ms |
0 / 0 |