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 ?

    http://pronix.de/modules/C/openbook/



  • 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! 🕶


Anmelden zum Antworten