Arbeitsspeicher löschen!
-
guest80 schrieb:
Es gibt doch bestimmt eine einfache Funktion, mit der man den Arbeitsspeicher löschen kann?
Nicht mehr benötigter Speicher wird mit free() freigegeben. Wurde hier aber schon gesagt.
edit:
aarrgh, zu spät
-
OK.
In meinem Fall muss ich doch free(neu) machen, oder? Das klappt nicht so ganz, mein Programm stürzt ab!
-
Was sagt den der Debugger? Den schon mal benutzt? Und "das klappt nicht so ganz" ist auch nicht die beste Problembeschreibung...;)
-
@guest80
Es versteht sich, dass du nach dem free() auch wieder mit malloc() bzw. realloc() speicher reservieren musst, wenn du wieder was speichern willst.... //Speicher reservieren adressen = malloc(anz_adressen * (struct st_adresse)); ... //Adressen eingeben und in Datei speichern ... free(adressen); ... adressen = malloc(anz_adressen_in_datei * (struct st_adresse)); ... //Adressen aus Datei laden ...
-
Mein Code:
struct ListEl *neu;
neu = (struct ListEl *) malloc(sizeof(struct ListEl));//
Hier reserviere ich Speicher um Adressen anzulegen.
Dann soll ich laut AJ folgendes machen
free(neu);
neu = (struct ListEl *) malloc(sizeof(struct ListEl));//
Der Compiler bringt ein Fehler:
"Konvertierung von ListEl in void* nicht möglich"
Der Prototyp von free ist ja
void free(void*)
!
Wie kann ich das lösen?
-
guest80 schrieb:
"Konvertierung von ListEl in void* nicht möglich"
Du sollst free einen Zeiger geben. Um genau zu sein exakt den Zeiger, den malloc/realloc/calloc dir geliefert hat.
Du uebergibst free aber keinen Zeiger und darueber beschwert sich dein compiler.
kann es sein, dass dir grundlagen fehlen?
-
JA, du hast Recht, mir fehlen die Grundlagen ein bißchen. Du hast sie wohl draf ! Wie wäre es denn wenn ich dir meine Dateien schicke und du löst dieses kleine Problem?
-
Wie wäre es, wenn du dir die Grundlagen einfach aneignest ?
-
guest80 schrieb:
JA, du hast Recht, mir fehlen die Grundlagen ein bißchen. Du hast sie wohl draf ! Wie wäre es denn wenn ich dir meine Dateien schicke und du löst dieses kleine Problem?
Eigentlich sollte die Antwort darauf sein:
Wie wäre es, wenn ich dir erstmal meine Kontonummer und Bankleitzahl schicke?
-
Hat ja keinen Sinn, alles vorzukauen, dann bleibt der Aha- Effekt aus und keiner hat was gelernt.
Mit den malloc()/free()- Hinweisen müßte Dir doch ausreichend gedient sein, guest80.
Wenn Du am restlichen Pipifax verzweifelst, hilft nur lesen und probieren ... das kann Dir niemand abnehmen!