在上学期我上的系统编程课上,我们必须用 C 语言实现一个基本的客户端/服务器。数据在客户端和服务器之间来回传输)教授指示我们只使用 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
。
memset
是一个标准的 C 函数,而 bzero
从来就不是一个 C 标准函数。基本原理可能是因为您可以使用 memset
函数实现完全相同的功能。
现在关于效率,gcc
等编译器使用 memset
的内置实现,当检测到常量 0
时切换到特定的实现。当禁用内置函数时,glibc
也是如此。
关于c - 为什么使用 bzero 而不是 memset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17096990/