Hilfe, Anfänger

  • Also, ich habegerade erst mit dem Programmieren angefangen und stelle mich lider ziemlich doof an...
    Meine Frage: Wann wird Speicher für lokale Variablen wieder freigegebe, und wann wird im Gegensatz dazu explizit reservierter Speicher wieder freigegeben?

    Über Hilfe würde ich mich sehr freuen!

    Liebe Grüße

  • was verstehst du unter "lokalen Variablen"?
    Globale Variablen und main-Variablen: Am Ende des Programms.
    Variablen eines Unterprogramms: Am Ende des Unterprogramms.
    Eigenschaften einer Klasse: beim Aufruf des Destruktors der Klasse.

    Mich interessiert jedoch, wofür du das brauchst.
    Hatte noch nie ein Speicherproblem, vor allem nicht am Anfang.

    Mit freundlichen Grüßen
    Dodo

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • Prinzipiell kann man sagen: am Ende des umfassenden Skopes. Dodo hat im Normalfall schon recht, allerdings muss man es eventuell genauer betrachten:

    Natürlich wird beim Aufruf der Funktion Platz für 2 (abgesehen vom Parameter bar) Integer auf dem Stack reserviert (temp und i), aber i darf nur innerhalb der for-Schleife genutzt werden. Ein Compiler würde den Speicher von i auf dem Stack wiederverwenden, wenn nach der for-Schleife eine neue Variable angelegt wird.

    Der Skope ( also { und } ) definiert also den Gültigkeitsbereich der Variablen auf dem Stack. Mit new angeforderter Speicher auf dem Heap (dynamischer Speicher), muss explizit mit delete wieder freigegeben werden. Machst du das nicht, hast du ein Speicherleck.

  • Tja, warum brauche ich das^^ Studiere Elektrotechnik und da muss ich nun ein Semester Programmieren. Dafür musste ich oben genannte Frage beantworten. Programmieren macht echt Spaß aber leider wird das ganze in einer ziemlichen Geschwindigkeit durchgeprügelt, weshalb ich mich jetzt schon mit diesem Thema beschäftigen.
    Also, vielen Dank für eure Hilfe, habt mir wirklich sehr geholfen!