这是允许的:memcpy(dest,src,0)

时间:2015-05-28 12:35:53

标签: c++ c

0传递给memcpy()时是否存在问题:

 memcpy(dest, src, 0)

请注意,在我的代码中,我使用的是变量而不是0,有时可以评估为0

2 个答案:

答案 0 :(得分:8)

正如人们对一个理智的界面所期望的那样,零是一个有效的大小,并且不会发生任何事情。 C99 7.21.1 / 2中各种字符串处理函数(包括memcpy)的规范特别允许:

  

如果声明为size_t n的参数指定函数数组的长度,则 n在调用该函数时可以为零。 [...]在这样的调用中,定位字符的函数不会发生,比较两个字符序列的函数返回零,而复制字符的函数复制零个字符

答案 1 :(得分:2)

是的,完全没问题。对memcpy的唯一限制是内存区域不能重叠。