Dodaję potomków TObject
do TStringList
, na przykład przez wywołanie AddObject
. Chciałbym, aby zostały uwolnione, gdy uwolnię obiekt listy. Czy jest jakiś sposób, aby to osiągnąć?Czy TStringList może automatycznie zwolnić obiekty dołączone do swoich przedmiotów?
8
A
Odpowiedz
14
Właściwość z TStringList
powinna być ustawiona na True
, aby lista mogła uwalniać swoje obiekty podczas niszczenia. Można to osiągnąć, dzwoniąc pod numer constructor overload that receives the OwnsObjects
parameter lub jawnie ustawiając właściwość po utworzeniu. Zaleca się ustawienie OwnsObjects
jako części konstrukcji obiektu.
documentation opisuje właściwość tak:
OwnsObjects właściwość określa, czy wykaz ten ciąg jest właścicielem przechowywanych przedmiotów, czy nie. Jeśli właściwość OwnsObjects jest ustawiona na wartość True, destruktor Destroy zwolni pamięć przydzieloną dla tych obiektów.
Powiązane problemy
- 1. Jak utworzyć potomka TStringList z właścicielem, który automatycznie zwolni TStringList?
- 2. Hibernacja, automatycznie utrzymywane obiekty zależne
- 3. Czy można częściowo zwolnić pamięć?
- 4. Czy memcached może przechowywać złożone obiekty?
- 5. Ustal, czy zdarzenie zostało dołączone do jeszcze jednego atrybutu:
- 6. Czy CSS może automatycznie dodawać tekst?
- 7. Czy GitHub może automatycznie łączyć gałęzie?
- 8. Kodowanie do interfejsu TStrings i TStringList
- 9. Sprawdzanie, czy można zwolnić wskaźnik
- 10. Spraw, aby Axios automatycznie wysyłał pliki cookie w swoich żądaniach.
- 11. Czy "pole-z-błędami" może być dołączone do rodzica znacznika wejściowego, który podnosi błąd?
- 12. metoda TStringList za addObject
- 13. Czy muszę zwolnić lokalne zmienne?
- 14. Czy muszę zwolnić BSTR (WideString) przydzielony przy pomocy SysAllocString?
- 15. Usuń puste ciągi z TStringList
- 16. Usuń ciągi znaków z TStringList
- 17. JRE dołączone do JDK kontra samodzielny JRE
- 18. Dołączone własnością liście Typ
- 19. Czy istnieje biblioteka Java, która może "zmienić" dwa obiekty?
- 20. Czy powinienem używać AutoMappera w swoich testach jednostkowych?
- 21. Czy odniesienia jądra jądra liczą obiekty jądra?
- 22. Czy SQLAlchemy może automatycznie tworzyć relacje ze schematu bazy danych?
- 23. Czy Pex może automatycznie wykryć warunki przepełnienia/niedomiaru?
- 24. Czy mogę zwolnić aplikację bez urządzenia?
- 25. Skąd czerpiesz zdjęcia do swoich projektów?
- 26. Czy układ automatyczny może zostać automatycznie włączony (załączony schemat)?
- 27. Czy muszę zwolnić zwrócony obiekt NSError?
- 28. Czy Sweave może automatycznie generować wiele plików PDF?
- 29. Czy mogę zwolnić pamięć przydzieloną do obrazu po wywołaniu glTexImage2D?
- 30. Czy muszę zwolnić HV * stworzoną z newHV?
To duplikat http://stackoverflow.com/questions/9148659/how-to-free-objects-in-stringlist-in-delphi-7, ale to pytanie jest słabo napisane. To właśnie powstrzymuje mnie od głosowania, aby zamknąć jako dupe. –
@iMan Usunąłem kod z pytania. W pytaniu tym nie ma sensu, ponieważ prawie odpowiada na pytanie. Jeśli odpowiesz na własne pytanie, najlepiej zachować część odpowiedzi w odpowiedzi. W każdym razie szczegóły implementacji nie są potrzebne, wystarczy odnieść się do dokumentacji, tak jak zrobiłem w mojej edycji do twojej odpowiedzi. –
@DavidHeffernan Właściwie znalazłem odpowiedź, kiedy pisałem to pytanie, i myślę, że napisanie go tutaj uratowałoby kogoś jeszcze kilka minut. –