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