2016-08-04 58 views
0

In einem Client-Server-System, in dem es möglich ist, dass der Server nur einen Teil des IE ausfüllt, muss der Rest als Standardwert (0) auf der Clientseite behandelt werden.Ist es eine gute Praxis, eine dynamisch zugewiesene Struktur mit allen 0 zu initialisieren, die memset() verwendet, wenn ja, was sind die Vorteile?

Für solch ein System ist es eine gute Idee, Speicher für die empfangene Nachricht dynamisch zu reservieren, bevor Sie den Inhalt der Nachricht kopieren?

+1

Was ist "* IE *"? – alk

+0

Es gibt keine allgemeine Antwort darauf. Wenn Sie null initialisierten Speicher benötigen, verwenden Sie 'calloc()'. Ansonsten hängt es davon ab, was Sie damit tun, ob ein Nullen erforderlich ist oder nicht. Wenn Sie beispielsweise mit 'snprintf()' einen C-String in den zugewiesenen Speicher schreiben, müssen Sie ihn nicht initialisieren, bevor Sie ihn schreiben. –

+0

Keine Verwendung im Speicher löschen, wenn Sie es überschreiben, indem Sie etwas anderes in es kopieren. –

Antwort

1

Es ist nicht notwendig, den Speicher zu initialisieren, der sofort nach der Initialisierung überschrieben wird.

Auch nicht verwendeter Speicher muss nicht initialisiert werden. ("unbenutzt" bedeutet hier, dass es nie gelesen wird.)

Alle anderen Speicher müssen initialisiert werden. Ob dies unter Verwendung von memset() und Schreiben von 0 s geschieht, hängt vom spezifischen Kontext und Anwendungsfall ab.