Wann Speicher wieder freigeben?



  • Hi,

    ich definiere mir hier ein Stringlist-Objekt, welches ich an einigen Stellen gebrauche.:

    #include <vcl.h>
    #pragma hdrstop
    #include "main.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TFormMain FormMain;
    TStringList
    MyList = new TStringList();

    Wann muss ich (oder muss ich überhaupt) diesen Speicher wieder freigeben? Wenn die Anwendung geschlossen wird, wird dan nicht der Speicher automatisch freigegeben?

    Gruß
    Al



  • hallo,

    eine tstringlist solltest du spätestens bei progende freigeben, da sie keinen owner hat geschieht dies nicht automatisch...

    mfg
    murph



  • hi, danke für die antwort. ich habe delete im ereignis des mainforms ondestroy eingebaut, das ist doch ok, oder?

    gruß
    al



  • Wann Speicher wieder freigeben?

    Dann, wenn der ds Objekt nicht mehr gebraucht wird.



  • Ist schon klar, nur denke, ich, dass wenn die Anwendung beendet wird, reservierter Speicher autonamtisch freigegeben wird!?



  • murphy schrieb:

    hallo,

    eine tstringlist solltest du spätestens bei progende freigeben, da sie keinen owner hat geschieht dies nicht automatisch...

    mfg
    murph

    Ich denke das war das was Murphy dir damit sagen wollte

    Schlumpf_



  • ok bin eigentlich selber anfänger aber ich denk mit der zuweisung:

    TStringList* MyList = new TStringList(this);
    

    betohnung liegt auf this! damit sagst du das die stringlist zu deiner application gehört und wenn diese beendet wird löscht sie alle this komponenten automatisch und du brauchst dich nicht um die freigabe kümmern.

    gruß
    binary



  • binary trust schrieb:

    betohnung liegt auf this!

    Bevor du das so betonst hättest du das vielleicht mal testen sollen ... 😉



  • oh meno, stimmt das etwa nicht ?



  • hallo,

    nein, das ist natürlich quark mit soße. um genau das ging es mir bei meiner antwort gaaaaanz am anfang. ich sagte doch, da tstringlist keinen owner als parameter annimmt muss man für das bereinigen selber sorgen, ansonsten, wenn man z. b. ein form als owner mitgeben kann, ist dieses dafür verantwortlich. bevor du das näxte mal so einen quark postest, teste es wenigstens einmal...

    mfg
    murph


Log in to reply