Dans une Programmation de Systèmes de classe, j'ai pris ce semestre précédent, nous avons dû mettre en place une base client/serveur en C. Lors de l'initialisation des structures, comme sock_addr_in
, ou char tampons (que nous avons utilisé pour échanger des données entre le client et le serveur), le professeur nous a enseigné à n'utiliser bzero
et pas memset
pour les initialiser. Il n'a jamais expliqué pourquoi, et je suis curieux de savoir si il y a une raison valable pour cela?
Je vois ici: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown qu' bzero
est plus efficace en raison du fait que n'est jamais va être mise à zéro de la mémoire, de sorte qu'il n'a pas à faire toute vérification supplémentaire qu' memset
peut faire. Ce n'est pas nécessairement sembler une raison absolument pas à l'utiliser memset
pour la réinitialisation de la mémoire.
bzero
est considéré comme obsolète, et en outre n'est pas un standard C de la fonction. Selon le manuel, memset
qui est privilégiée bzero
pour cette raison. Alors, pourquoi voudriez-vous d'utiliser encore bzero
sur memset
? Juste pour les gains d'efficacité, ou est-il quelque chose de plus? De même, quels sont les avantages de l' memset
sur bzero
qui en font de facto de l'option privilégiée pour les nouveaux programmes?