为什么对memset使用bZero?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

在上学期的一个系统编程类中,我们必须在C中实现一个基本的客户机/服务器,当初始化这些结构时,如下所示sock_addr_in,或char缓冲区(我们用来在客户端和服务器之间来回发送数据)教授指示我们只使用bzero而不是memset初始化它们。

bzero因为只有对内存进行零化才能提高效率,所以不需要进行任何额外的检查。memset也许可以。但这并不一定是绝对不使用的理由memset不过是用来对记忆进行零化的。

bzero被认为是不推荐的,而且还不是一个标准的C函数。根据手册,memset优先于bzero因为这个原因。那你为什么还想用bzero过关memset是吗?只是为了提高效率,还是更多?同样,memset过关bzero这使得它成为了更新程序的事实上的首选方案?

提问于
用户回答回答于

我不认为有什么理由bzero过关memset

memset是一个标准的C函数bzero从来都不是C标准函数。其基本原理可能是因为可以使用以下方法实现完全相同的功能memset功能。

现在关于效率,编译器像gcc使用内置实现memset时切换到特定实现的0被检测到。同为glibc当内置程序被禁用时。

用户回答回答于

我会坚持memset只是因为bzero不受欢迎,并降低了可移植性。我怀疑你是否会看到任何真正的收益使用一个而另一个。

扫码关注云+社区