Es sei der Einfachheit halber folgende structure gegeben:
struct test { char *name; } structure, *pointer;
ferner
pointer = (struct test *) malloc(sizeof(struct test));
Dann geht es folgendermaßen weiter:
structure.name=(char *) malloc (sizeof("Emily"+1));
strcpy (structure.name,"Emily");
..
Folgendes Problem: im ersten malloc wird eine Anzahl von Bytes (bei mir sind es 4) für die struct test reserviert.
zu diesem Zeitpunkt steht aber noch nicht fest, wie lange der String structure.name wird.
Die Reservierung von Speicherplatz für "Emily", das sind noch einmal 6 Bytes, also mehr Bytes als die Struktur insgesamt zugewiesen bekommt (Bei mir eben 4 Bytes).
Insofern sprengt das 2. malloc den Speicherplatz für die Struktur insgesamt (1. malloc).
Daher frage ich mich, ob das überhaupt so zulässig ist.