Heute habe ich Seite 167 von The C Programming Language (zweite Ausgabe Brian W. Kernighan & Dennis M. Ritchie) erreicht und festgestellt, dass der Autor sagt, ich muss besetzen malloc
. Hier ist der Teil aus dem Buch:
7.8.5 Speicherverwaltung
Die Funktionen malloc und calloc erhalten Speicherblöcke dynamisch.
void *malloc(size_t n)
Gibt einen Zeiger auf n Bytes nicht initialisierten Speichers oder NULL zurück, wenn die Anforderung nicht erfüllt werden kann.
void *calloc(size_t n, size_t size)
Gibt einen Zeiger auf genügend freien Speicherplatz für ein Array von n Objekten der angegebenen Größe zurück oder NULL, wenn die Anforderung nicht erfüllt werden kann. Der Speicher wird auf Null initialisiert. Der von malloc oder calloc zurückgegebene Zeiger hat die richtige Ausrichtung für das betreffende Objekt, muss jedoch wie in den entsprechenden Typ umgewandelt werden
int *ip; ip = (int *) calloc(n, sizeof(int));
Ich weiß bereits, dass malloc
(und seine Familie) den Typ void * zurückgibt , und es gibt gute Erklärungen, warum man nicht besetztmalloc
.
Aber meine Frage ist: Warum sagt das Buch, ich sollte es besetzen?
void *
und nicht aktualisiert wurde. Siehe auch diese Antwort .malloc
weil es NICHT C ++ ist - außer wenn Sie müssen - aber Sie sollten nicht - außer ... AGGGHHHHHH !!!!! :-)Antworten:
Von http://computer-programming-forum.com/47-c-language/a9c4a586c7dcd3fe.htm :
quelle
char*
, nichtchar
. Die beiden sind sehr unterschiedlich.