free - Speicher freigeben



  • void deallocate(char *s) {
       free(s);
    }
    
    int main() {
       char *t = (char *) malloc (1*100);
       deallocate(t);
       return 0;
    }
    

    Ist sowas erlaubt oder weiß dann der Computer nicht wieviel er freigegeben wurde. Zwar ist das call by reference der Zeiger wird aber als kopie übergeben die kopie verweist aber immernoch auf das allozierte Array. Ich hab bedenken das intern die Adresse des Pointers benutzt wird um sich zu merken wieviel freigegeben wurde und wenn die fkt deallocate nun dies übernimmt kriegt sie eine kopie des zeigers mit einer anderen adresse und der computer weiß nicht wieviel er freigeben muss.

    Vielen Dank für eure Hilfe



  • kknd schrieb:

    Ist sowas erlaubt

    Ja, das ist absolut richtig so.

    Ich hab bedenken das intern die Adresse des Pointers benutzt wird um sich zu merken wieviel freigegeben wurde

    Nein, diese Informationen stehen woanders, oft unmittelbar vor dem Beginn des allozierten Bereiches.


Anmelden zum Antworten