当我无力移动/复制时,是否需要将案件作为memmove()
/ memcpy()
边缘案件
int numberOfBytes = ...
if( numberOfBytes != 0 ) {
memmove( dest, source, numberOfBytes );
}
还是应该不检查就调用函数
int numberOfBytes = ...
memmove( dest, source, numberOfBytes );
前段中的支票是否必要?
6
这个问题使我想起了一些检查诸如free之类的函数的空指针的问题。没必要,但是我会在此处发表评论以表明您对此的想法。
—
蟾蜍
@Toad:除了使代码混乱之外,还有什么用?在阅读某人的代码时,我不需要知道原始程序员“是在考虑执行此操作,而这实际上不是必需的,但是因为它是不必要的,所以我没有这样做”。如果我看到释放了一个指针beeing,我知道它可以为空,所以我不需要知道原始程序员关于“我应该检查空”的想法。使用
—
jalf 2010年
memcpy
@jalf:这是关于stackoverflow的问题,这使人们感到怀疑。因此,添加评论可能无济于事,但可能会帮助知识较少的人
—
Toad
@Toad是的,原则上明确指出为什么实际上没有必要进行检查的评论很有价值。硬币的另一面是,该特定示例是一个常见情况,涉及一个标准库函数,每个程序员只需要学习一次答案即可。然后他们可以在阅读的任何程序中识别出不需要进行这些检查。对于那个原因,我省略了意见。一个具有多个调用的代码库要么需要将注释复制并粘贴到每个注释,要么仅在某些调用上随意使用它们,这两个调用都很丑陋。
—
Mark Amery