Speicherproblem
-
Hey ihr,
ich hab ein kleines Problem mit dem Speicher.Und zwar benutze ich zum Programmieren Knoppix 5.0.
Dann benutze ich eine Struktur:struct Struktur{ ... ... }st;
und hab darauf einen Zeiger:
struct Strukur *stzeiger; if(stzeiger == NULL) { Fehler beim Speicher; return 0; }
am Ende hab ich dann auch noch free(stzeiger);
Nachdem ich das Programm so 5 bis 10 mal durchlaufen lasse, kommt in der Komandobox bei Knoppix die Anzeige "Fehler beim Speicher".
Jetzt ist meine Frage: Gibt es eine Möglichkeit, bei Knoppix den Speicher zu leeren. Denn ein Neustart dauert immer so lange. Nach dem Neustart läuft es wieder ein paar mal.Vielen Dank schonmal
-
mach aus der zeile
struct Strukur *stzeiger;
das:
struct Strukur *stzeiger = malloc(sizeof(struct Struktur));
edit: muss man knoppix rebooten bei 'nem error? das ist aber mies...
-
Ich weiß nicht und hoff auch nicht, dass man rebooten muss.
Ich weiß nur, dass es damit funktioniert.Das ist eigentlich meine Frage, wie und ob es anderst geht.
Die Zeile
stzeiger = (struct Struktur *) malloc (30 * sizeof(struct Struktur));
kommt danach. Aber der "Fehler" tritt vor der malloc Zeile auf.
-
Zeig doch bitte den ganzen Code. So ist das ein blindes Rumgestochere.
Edit: Und malloc() wird in C nicht gecastet.
-
"Fehler beim Speicher"
Was will uns der Dichter damit sagen? Beim Speicher ist ein Fehler. Wahrscheinlich ein Haarriss auf der Platine. Dafür kann Knoppix nichts, dein Programm auch nicht. Da hilft nur noch der Lötkolben.
-
Vermutlich heißt "Fehler beim Speicher" in Wahrheit "Fehler beim Speicher_n_" und deutet auf ein Problem in der Linux-Konfiguration hin. Nun müsste man wissen, welcher Prozess wohin schreiben möchte.
-
Hey Nerd,
in der Konsole steht: Speicherzugriffsfehler. Wie soll ich das anderst schreiben?
Wenn ich die malloc Zeile dazwischen schreibe ist der Fehler behoben.
Bielen Dank an Alle außer bashar.
-
troll23 schrieb:
Hey Nerd,
in der Konsole steht: Speicherzugriffsfehler. Wie soll ich das anderst schreiben?
Wenn ich die malloc Zeile dazwischen schreibe ist der Fehler behoben.
Bielen Dank an Alle außer bashar.
du machst deinem Nickname alle Ehren. Denkst du, wir sind hier verpflichtet, dir vernünftige Antworten zu geben, wenn du dir keine Mühe gibst, dein Problem genauer zu erläutern? So wirst du aber hier kaum Hilfe bekommen.
-
Wer sich selbst "troll" nennt, hat sich damit vermutlich keinen großen Gefallen getan, falls er damit ernste Fragen stellen will.
Zum Thema:
BEVOR Du den Pointer initialisierst (egal ob mit NULL oder malloc), hast Du garnicht drauf zuzugreifen. Der Pointee ist willkürlich, und das hat nichts mit Speicherfehlern zu tun.Und moderne Betriebssysteme geben den Speicher einer Anwendung grundsätzlich nach deren Beendigung frei.
-
troll23 schrieb:
in der Konsole steht: Speicherzugriffsfehler. Wie soll ich das anderst schreiben?
Wenn da steht "Speicherzugriffsfehler", dann schreibst du "Speicherzugriffsfehler". Den Fehler haben die meisten schon öfter gesehen als ihnen lieb ist und können dazu möglicherweise was sagen. Irgendwelche kreativen Umformulierungen können von diesem Vorteil nicht profitieren und führen doch eher zu allgemeiner Ratlosigkeit.