Speicherproblem ???



  • Meine Frage: Wie gebe ich die variable arr* am besten wieder frei??? Und gibt es eine möglichkeit den speicher freizugeben ohne die variable zu zerstören? (bisher habe ich es immer mit delete gemacht)???

    int* arr;
    
    Class Test
    {
       Test::Test()
       {
       }
       Test::~Test()
       {
       }
       Test::irgendwas()
       {
          arr = (int *)malloc(sizeof(int)*count); //was auch immer...
       }
    
    }
    


  • Hi,
    gehört wohl eher ins C++ Forum 😉
    Also,

    wenn du schon mit C++ arbeitest würde ich auch new und delete verwenden:

    int* arr = NULL;
    int count = 13;
    arr = new int[count];
    //blablabla
    delete []arr; // löschen
    

    Grüße Rapha



  • Achja

    l00P schrieb:

    Und gibt es eine möglichkeit den speicher freizugeben ohne die variable zu zerstören?

    Ne, wie soll das denn gehen?
    Der Zeiger, dessen Speicher (auf den er zeigt) du gelöscht hast, kannst du schon noch verwenden, du musst ihm aber wieder neuen Speicher mit new zuweisen.

    Grüße Rapha



  • es geht mir darum das mir ein externes Debugging Program ein memory leek anzeigt und ich nun wissen will wo ich am besten diesen speicher wieder freigebe, ich habs noch nicht geschafft das ML zu schließen... Ich habs auch schon im Destruktor probiert, warum geht das denn nicht??

    danke l00P



  • Hi

    l00P schrieb:

    nun wissen will wo ich am besten diesen speicher wieder freigebe

    Kommt drauf an. Wenn du das Objekt nur temporär verwendest (d.h. nur in einer Funktion), dann gib den Speicher am Ende der Funktion frei.
    Wenn du den Zeiger als Membervariable in einer Klasse hast, dann gib den Speicher im Destruktor der Klasse frei.

    l00P schrieb:

    Ich habs auch schon im Destruktor probiert, warum geht das denn nicht??

    Klar funktioniert das...

    Vielleicht gibst du den Speicher irgendwo falsch frei (z.B. delete anstatt delete [])?

    Grüße Rapha



  • 👍 ja hast recht, ich habe den speicher freigeeben und brauche ihn in einer anderen function noch... 💡

    danke euch
    greets() l00P


Anmelden zum Antworten