Programmierung Klasse in einem System Ich habe diesen Vorsemesters, wir hatten einen einfaches Client / Server in C zu implementieren , wenn dem structs Initialisierung wie sock_addr_in
oder char - Puffers (die wir verwenden , um Daten zurück zu senden und her zwischen Client und Server) der Professor hat uns angewiesen, sie nur zu verwenden bzero
und nicht memset
zu initialisieren. Er hat nie erklärt warum und ich bin gespannt, ob es dafür einen triftigen Grund gibt?
Ich sehe hier: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown , bzero
das effizienter ist, weil immer nur Speicher auf Null gesetzt wird, also nicht müssen zusätzliche Überprüfungen durchführen, memset
die dies möglicherweise tun. Das scheint jedoch nicht unbedingt ein Grund zu sein, es absolut nicht memset
zum Nullstellen des Speichers zu verwenden.
bzero
gilt als veraltet und ist darüber hinaus keine Standard-C-Funktion. Laut Handbuch memset
wird bzero
aus diesem Grund bevorzugt . Warum sollten Sie also immer noch bzero
über verwenden memset
? Nur für die Effizienzgewinne, oder ist es etwas mehr? Was sind die Vorteile von memset
Over bzero
, die es zur de facto bevorzugten Option für neuere Programme machen?
memset
möglicherweise etwas weniger effizient ist, weil "ein bisschen mehr überprüft wird", ist definitiv ein Fall vorzeitiger Optimierung: Was auch immer die Vorteile sind, die Sie durch das Weglassen eines oder zweier CPU-Befehle sehen, es lohnt sich nicht, wenn Sie die Portabilität Ihrer CPU gefährden können Code. bzero
ist veraltet, und das ist Grund genug, es nicht zu benutzen.