Hallo,
char b = 0;
>
> Hier bekommt b den Wert 0.
>
> ~~~c
> a = (char *)malloc(b);
>
Hier rufst du malloc auf. b hat den Wert 0. Ergo steht dort malloc(0).
Daher dürfte gar kein Speicher reserviert werden...
Jain. Laut Standard ist es der Implementierung überlassen, ob sie bei malloc(0) KEINEN Speicher reserviert und NULL) zurückgibt - was dann zu einem Fehler führt ODER ob sie tatsächlich einen 0 Byte großen Speicherbereich reserviert, der dann auch zurückgegeben wird und per free() wieder freigegeben werden kann/muss.
Da das aber wie gesagt der Implementierung überlassen ist, würde ich malloc() definitiv NIE 0 übergeben wollen.
Viele Grüße,
Christian