В классе системного программирования я взял этот предыдущий семестр, нам пришлось реализовать базовый клиент/сервер в C. При инициализации структур, например буферов sock_addr_in
или char (которые мы использовали для отправки данных назад и между клиентом и сервером) профессор поручил нам использовать bzero
, а не memset
для их инициализации. Он никогда не объяснял, почему, и мне любопытно, есть ли веская причина для этого?
Я вижу здесь: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown, что bzero
более эффективен из-за того, что только когда-либо будет обнулять память, поэтому нет необходимости выполнять дополнительную проверку, которую может выполнять memset
. Это все еще не обязательно является повод для абсолютно не использовать memset
для обнуления памяти.
bzero
считается устаревшим и, кроме того, не является стандартной функцией С. Согласно руководству, memset
является предпочтительным по сравнению с bzero
по этой причине. Итак, почему вы хотите использовать bzero
над memset
? Просто для повышения эффективности, или это нечто большее? Кроме того, каковы преимущества memset
over bzero
, которые делают его де-факто предпочтительным вариантом для более новых программ?