ausplanen Während diese article lesen, ich kam in diesem Absatz:Mit freiem einem nicht char Zeiger in C
Zeiger auf Objekte die gleiche Größe, aber verschiedene Formate haben. Diese wird durch den Code unten dargestellt:
int *p = (int *) malloc(...); ... free(p);
Dieser Code kann in Architekturen zu Fehlfunktionen in dem int * und char * haben unterschiedliche Darstellungen, weil kostenlos einen Zeiger der letzteren Art erwartet.
Und das ist nicht das erste Mal, dass ich gelesen, dass free
erwartet einen char*
Typen.
Meine Frage ist, wie zu befreien?
'free' nimmt ein' void * ', kein' char * '. Holen Sie sich ein neues Buch (d. H. Nicht älter als 18 Jahre und über moderne C). Das erklärt auch die Semantik und nicht das Ergebnis von "malloc" & friends. – Olaf
Aber ['frei'] (http: //en.cppreference.com/w/c/memory/free) erwartet ein 'void *' als Argument. Der Artikel, auf den Sie verlinken, ist * sehr * alt. Auch die Wahrscheinlichkeit, dass Sie jemals ein System finden, in dem verschiedene Zeigertypen unterschiedliche Darstellungen haben, ist gering bis nichts (außer Sie wollen sich auf antike Systeme und Computerarchäologie spezialisieren) –
@Someprogrammerdude sogar, dass der Artikel alt ist, sind sich die Autoren bewusst der Standard C. Also ich denke, der Absatz ist falsch und nicht alt. –