Speicherverwaltung in C
-
hi
aber man kann für sein zweck,eine eigene geeignete komfortable lösung schreiben.
doch das sind wider reine ansichts sachen.
am ende den speicher wider freizugeben, gehört aber zum einem guten programmierstyle.lowbyte
-
lowbyte_ schrieb:
am ende den speicher wider freizugeben, gehört aber zum einem guten programmierstyle.
Klar, dem wollte ich auch nicht ernsthaft widersprechen (=>Smiley
), aber das Ziel, Speicherlecks während der Laufzeit zu verhindern, wird damit nicht erreicht. Was bringt einem das Freigeben am Ende, wenn man gar nicht soweit kommt, weil man zwischendurch gnadenlos den Speicher vollknallt...
-
Hi
Früh bei der Arbeit was
matze_ schrieb:
aber das Ziel, Speicherlecks während der Laufzeit zu verhindern, wird damit nicht erreicht. Was bringt einem das Freigeben am Ende, wenn man gar nicht soweit kommt, weil man zwischendurch gnadenlos den Speicher vollknallt...
Ja das ist so ...
lowbyte
-
lowbyte_ schrieb:
Früh bei der Arbeit was
Hehe, nee, zum Glück noch nicht...
-
Muss man händisch machen. Dafür nutzt man in C gerne goto und beschränkt sich auf eine "return-Anweisung", damit man den Programmflow besser verfolgen kann. Daher ist das in MISRA fest vorgeschrieben.
Allein das RAII macht C++ schon angenehmer als C.
-
Mich interessiert das auch sehr, da ich gerade mit C angefangen habe. Also eine Möglichkeit haben wir hier schon kennengelernt und zwar die mit dem Speicher der Zeiger in einer Liste. Das scheint aber nicht wirklich zu helfen da zwar am Ende eines Programms es zum guten Stil gehört den Speicher wieder frei zu geben, aber dies ja eh automatisch geschieht.
Wie verhindert ich in C die Speicherfehler zu Laufzeit? Es sind doch so viele C Programmierer hier die alle dieses Problem schon gelöst haben, ansonsten könnten sie ja nicht ordentlich programmieren. Also bitte erzählt doch mal welche Techniken ihr für eure Speicherverwaltung einsetzt?
-
Hi
Das kommt auf die Grösse eines Projektes an.
Und die breite des Thema Speicherverwaltung in C ist gross.
Bitte konkretisier dich doch etwas. Was meinst du mit :Wie verhindert ich in C die Speicherfehler zu Laufzeit?
Hää
?
lowbyte
-
Hallo zusammen,
+ ich mache mir Gedanken ob denn unbedingt dynamischen Speicher nötig ist
+ ich verwende viel viel Stack,
der Stack wird am Ende einer Funktion freigegeben,
auch ist es möglich dynamisch auf dem Stack zu allozieren.+ Ich arbeite so denn möglich streamed,
z.B. wird eine große Datei nicht komplett in
den Speicher gelesen sondern immer nur in 4 KB Buffern auf dem Stack+ Ich verwende eigene Heap Funktionen, die mir am Ende des (Test) Programms
sagen ob ich allen Speicher auch wieder freigegeben habe.Das wären die typischen Maßnahmen die mir gerade einfallen
Gruß Frank
-
Frank Erdorf schrieb:
auch ist es möglich dynamisch auf dem Stack zu allozieren.
Das sollte man aber wirklich nur machen, wenn man genau weiß, wieviel Speicher maximal auf dem Stack landen kann. Dynamischer Speicher auf dem Stack kann sinnvoll sein (Performance), aber als grundsätzliche Alternative zum Heap (aus Angst, auf diesem Lecks zu produzieren) darf man es natürlich nicht ansehen. Tausche gut erhaltenes Speicherleck, Baujahr '96, gegen neuwertigen stack overflow!
-
Nett formuliert matze
Gruß Frank