malloc
initialisiert den zugewiesenen Speicher nicht. Du bekommst einfach, was auch immer der Müll war. Wenn Sie wirklich alles auf 0 setzen müssen, verwenden Sie calloc
bei einer Leistungseinbuße. (Wenn Sie mit etwas anderem als 0 initialisieren müssen, verwenden Sie memset
für Bytearrays und andererseits das Array manuell, um es zu initialisieren.)
C11 7.22.3.4
%Vor%Die malloc-Funktion weist Speicherplatz für ein Objekt zu, dessen Größe ist spezifiziert durch die Größe und dessen Wert ist unbestimmt.
Wenn Sie möchten, dass die Werte auf Null gesetzt werden, verwenden Sie stattdessen Calloc. Calloc ist im Grunde nur eine Wrapper-Funktion um einen Aufruf von malloc und einen Aufruf von memset.
malloc () übernimmt aus Performance-Gründen keine Gewähr für den Inhalt des neu zugewiesenen Speichers. Es könnte Nullen sein, es könnten zufällige Daten sein, es könnte alles sein. Wenn Sie möchten, dass malloced Speicher einen bestimmten Wert hat, dann liegt es an Ihnen, es zu tun.