Die Funktion "malloc" gibt im Fehlerfall "NULL" zurück, beispielsweise wenn momentan nicht so viel freier Speicher vorhanden ist wie angefordert. Wenn man ein robustes C Programm schreiben will, muss man diesen Fall eigentlich immer behandeln und sich überlegen, wie das Programm weiterarbeiten soll, wenn nicht mehr genug Speicher vorhanden ist. Da es in C keine Exceptions gibt, ist das aber relativ aufwendig zu programmieren. Daher haben wir uns in der Vorlesung und der Übung die Sache etwas vereinfacht behandelt und einfach mit "printf" eine Fehlermeldung ausgegeben und mit "exit" das Programm beendet. Der Parameter "1" beim Aufruf von "exit" ist der Rückgabewert des Programms. Ein Wert ungleich 0 signalisiert dem Aufrufer des Programms, dass dieses nicht erfolgreich ausgeführt wurde.
Bei C-Programmen, die etwas länger laufen sollen (grafische Anwendungen, Server, Betriebssystem-komponenten, etc.) ist es natürlich nicht sinnvoll einfach das Programm zu beenden. Dann muss man sich überlegen, was für die Anwendung Sinn macht. Oft ist es sinnvoll den Fehler in einer Funktion erst einmal an den Aufrufer weiterzugeben.
Wenn in der Klausuraufgabe aber nicht explizit gefordert ist, was im Fehlerfall passieren soll, muss der Rückgabewert von "malloc" dort auch nicht geprüft werden.
falls ich das Listenelement erstelle ist es doch zu anfang immer NULL oder nicht ?
Der Rückgabewert von "malloc" ist ein Pointer, der nur im Fehlerfall NULL ist. Der Inhalt des Speicherbereichs ist jedoch erstmal nicht initalisiert (was nochmal etwas anderes als NULL ist). Bei "malloc" darf erst nach der Initialisierung des Speicherbereichs daraus gelesen werden. Die Variante "calloc" garantiert, dass im neuen Speicherbereich nur Nullen stehen.