Memory-Leaks durch return ?

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend erstmal.
    Simple Frage: Wenn ich aus einer Funktion oder einem Stock ein String returne, wird dieser ja logischerweise beim "verlassen" der Funktion nichtmehr gelöscht.
    Entsteht hierbei ein Memory-Leak ? Wenn ja, kann ich das verhindern ?



    Beispiel:


    stock test()
    {
    new test[32];
    format(test,sizeof(test),"TEST");
    return test;
    }

  • Normalerweise entsteht dabei keine Speicherlücke denn der benutzte Speicher wird im Normalfall wieder freigegeben. Sobald die Funktion beendet wird, werden alle Lokalen Variablen sprich Variablen innerhalb diesen Blocks wieder freigegeben sprich der Speicher kann wieder überschrieben bzw. verändert werden.Variablen die sich z.b. im öffentlichen Bereich befinden sprich in keinem Block eingekesselt sind werden erst gelöscht sobald das Skript entladen.


    Natürlich gibt es auch Ressourcen die z.b. manuell wieder freigegeben werden müssen ein Beispiel sind meist Grafik Engines die Texturen auf eine bestimmte Entfernung laden und entladen müssen damit der Speicher nicht irgendwann so überladen ist dass gar nichts mehr geht.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion