在我上学期上的系统编程课上,我们必须用 C 语言实现一个基本的客户机/服务器。当初始化结构时,比如 sock_addr_in
,或者 char buffer (我们用来在客户机和服务器之间来回发送数据) ,教授指示我们只使用 bzero
而不是 memset
来初始化它们。他从未解释过原因,我很好奇这是否有合理的解释?
我在这里看到: http://fdiv.net/2009/01/14/memset-vs-bzero-ultimate-showdown,bzero
是更有效的,因为事实上它永远只会是零内存,所以它不必做任何额外的检查,memset
可能做。但是,这仍然不一定是绝对不使用 memset
来归零内存的理由。
bzero
被认为是不推荐的,而且是一个非标准的 C 函数。根据手册,memset
是优先于 bzero
的这个原因。那么为什么还要使用 bzero
而不是 memset
呢?只是为了提高效率,还是别的什么?同样,memset
相对于 bzero
的优点是什么,使它成为新程序事实上的首选?