Results 1 to 6 of 6

Thread: TArray; het vrijgeven van objecten

  1. #1
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,531

    TArray; het vrijgeven van objecten

    Ik ben bezig om mijn programma aan te passen naar wat nieuwere functionaliteiten binnen Delphi.
    Daarvoor heb ik o.a. gebruik gemaakt van TArray. Deze wordt gevuld met de pointers van een object. Dat werkt allemaal prima. Zelfs sorteren gaat goed.

    Wat ik mij alleen aanvraag, wie ruimt nu die aangemaakte objecten op? Ik vind op het internet nergens dat er ergens een free instantie is, die alles voor je opruimt. Als je TArray lokaal in een procedure gebruik, wordt deze netjes opgeruimd. Het is eigenlijk niet meer dan een dynamische array, die een voordeel heeft om alles in te stoppen wat je wilt (strings, integers, pointers van objecten (weet alleen niet hoe het zit met typed records)).

    Het is en blijft een aangemaakt object in het geheugen wat normaliter je vrij moet geven als je klaar bent.
    Delphi is great. Lazarus is more powerfull

  2. #2
    Quote Originally Posted by jkuiper View Post
    Daarvoor heb ik o.a. gebruik gemaakt van TArray. Deze wordt gevuld met de pointers van een object.
    Als die objecten geen 'owner' hebben, zul je die volgens mij gewoon zelf op moeten ruimen. Zelfde als bij een TList.
    De TArray zelf wordt waarschijnlijk via scope automatisch opgeruimd.

    Als je TArray lokaal in een procedure gebruik, wordt deze netjes opgeruimd. Het is eigenlijk niet meer dan een dynamische array, die een voordeel heeft om alles in te stoppen wat je wilt (strings, integers, pointers van objecten (weet alleen niet hoe het zit met typed records)).
    Objecten worden dus niet opgeruimd.

    Heb je standaard niet de leak-memory manager aanstaan die een seintje geeft wanneer je in DEBUG iets niet opruimt? Of bestaat die niet in FMX?

  3. #3
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,531
    Nee, die heb ik nooit aangezet

    Ik werk nog steeds in VCL. Maar ik heb dit programma nu zo omgebouwd dat FMX te realiseren is (maar de vraag of ik dat wil is er niet )
    Delphi is great. Lazarus is more powerfull

  4. #4
    Standaard in mijn .dpr

    Delphi Code:
    1. {$WARN SYMBOL_PLATFORM OFF}
    2.   ReportMemoryLeaksOnShutdown := DebugHook <> 0;
    3. {$WARN SYMBOL_PLATFORM ON}

  5. #5
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,531
    En als deze memoryleaks opgeeft van componenten, die niet van mijzelf zijn?
    Delphi is great. Lazarus is more powerfull

  6. #6
    Quote Originally Posted by jkuiper View Post
    En als deze memoryleaks opgeeft van componenten, die niet van mijzelf zijn?
    Die kun je dan definitief 'uitschakelen' door deze te regsitreren.

    Bijvoorbeeld:
    Delphi Code:
    1. RegisterExpectedMemoryLeak(TIdThreadSafeInteger);

    Beter is natuurlijk dat component te fixen of melden dat er een leak in zit.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •