Globalen Variablen -> Speicherleck?
-
Ok, danke
-
Da muss ich dir aber wiedersprechen. IMHO sollte man den Speicher auch wieder
freigeben, den man reserviert hat.Du raeumst doch auch dein Zimmer selbst auf, oder laesst du das deine Mutter
machen?mfg
v R
-
ja?
wie kann man das dann machen?
ein speicher frei legen der nicht dynamisch ist?
auch mit delete var; ?
-
Wie ist das eigendlich mit den Klassen?
funktionieren die gleich wie funktionen?
Am ende der klasse werden die Atribute gelöscht?Giebds eigendlich eine möglichkeit diese speicher zu logalisieren und prüfen?
So könnte man prüfen ob alles ordendlich gelöscht worden ist.
-
Edi schrieb:
ja?
wie kann man das dann machen?
ein speicher frei legen der nicht dynamisch ist?
auch mit delete var; ?Du brauchst dich um Objekte, welche nicht dynamisch erstellt worden sind, nicht
zu kuemmern.mfg
v R
-
ok, danke!
nur möchte ich noch wissen wie ich schon oben geschrieben hab, ob man irgendwie diese speicher lokalisieren kann und so nachprüfen kann ob alles sauber abgeschlossen wurde. Giebds auch eine möglichkeit lecks zu löschen?
-
wenn mans löschen könnte, wärs kein leck
solange man kein new verwendet, braucht man sich um den speicher normalerweise nicht zu kümmern, ansonsten musst du "nur" darauf achten, dass du jedes mit new erstellte objekt hinterher mit delete löscht, bzw jedes mit new[] erstellte array wieder mit delete[] übern jordan schickst.
wenn du das machst, dann ist alles in ordnung, wenn delete nicht klappt, dann ist normalerweise dein bs schon lange aus dem stadium des abstürzen hinaus
-
Edi schrieb:
ok, danke!
nur möchte ich noch wissen wie ich schon oben geschrieben hab, ob man irgendwie diese speicher lokalisieren kann und so nachprüfen kann ob alles sauber abgeschlossen wurde. Giebds auch eine möglichkeit lecks zu löschen?Nein. Dein Speichermanager kennt zwar jeglichen angeforderten Speicher, er weiss aber nicht, was noch verwendet wird und was nicht, wenn du vergessen hast nicht mehr benötigten Speicher freizugeben.
Speicherlecks verhinderst du am besten, wenn du auf entsprechende Container zurückgreifst, zB std::vector. Da das nicht immer möglich ist, zB wenn du dir einen eigenen Container bastelst, dann solltest du dir mal Smart Pointer anschaun.
-
Ok, ich dank euch
Grüsse, Edi
-
virtuell Realisticer schrieb:
Da muss ich dir aber wiedersprechen. IMHO sollte man den Speicher auch wieder
freigeben, den man reserviert hat.Ja klar, in der Regel schon. Ich wollte nur aufzeigen, dass das auch Nachteile haben kann.
Du raeumst doch auch dein Zimmer selbst auf
Selten...
Aber wen anderen lass ich's natürlich auch nicht machen.
-
Ringding schrieb:
virtuell Realisticer schrieb:
Da muss ich dir aber wiedersprechen. IMHO sollte man den Speicher auch wieder
freigeben, den man reserviert hat.Ja klar, in der Regel schon. Ich wollte nur aufzeigen, dass das auch Nachteile haben kann.
Du raeumst doch auch dein Zimmer selbst auf
Selten...
Aber wen anderen lass ich's natürlich auch nicht machen.
Nana, was hoere ich denn da ;). Aber mein Zimmer willst schaust du dir besser
auch nicht an :D.mfg
v R