Zuweisung von char-array mit malloc
Hi, vor kurzem sah ich eine Menge von Codes, die auf online(auch SO;) wie:
char *p = malloc( sizeof(char) * ( len + 1 ) );
Warum sizeof(char) ? Es ist nicht nötig, nicht wahr? Oder Ist es nur eine Sache des Stils?
Welche Vorteile hat es?
- Duplikat von stackoverflow.com/questions/1011806/... obwohl ich nicht einverstanden mit der Antwort akzeptiert es (ich lieber weglassen sizeof(char))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist eine Frage des Stils, da Sie erwarten würden
sizeof(char)
immer einen.Auf der anderen Seite, es ist sehr viel ein idiom zu verwenden
sizeof(foo)
bei einermalloc
, und das wichtigste, es macht den code selbst dokumentiert.Auch besser für die Wartung, vielleicht. Wenn Sie wechseln von
char
zuwchar
würden Sie wechseln zuohne viel zu denken. In der Erwägung, dass die Umwandlung der Anweisung
char *p = malloc( len + 1 );
würde erfordern mehr Gedanken. Es ist alles über die Verringerung der psychischen Aufwand.Und wie @Nyan schlägt in einem Kommentar, Sie könnte auch tun,
für null-terminierte strings und
zur ordentlichen Puffer.
len +1
Teil wäre nur für string-Objekte wie.Es dient der selbst-Dokument der operation. Die Sprache definiert ein char genau ein byte. Es ist nicht angegeben, wie viele bits sind in byte als einige Maschinen haben 8, 12, 16, 19 oder 30 bit (minimum adressierbaren Einheiten (oder mehr). Aber ein char immer ein byte.
Die Spezifikation schreibt vor, dass chars sind 1-byte, so ist es rein optional. Ich persönlich immer die
sizeof
für die Konsistenz verwenden, aber es spielt keine Rolle,