将0
传递给memcpy()
时是否存在问题:
memcpy(dest, src, 0)
请注意,在我的代码中,我使用的是变量而不是0
,有时可以评估为0
。
答案 0 :(得分:8)
正如人们对一个理智的界面所期望的那样,零是一个有效的大小,并且不会发生任何事情。 C99 7.21.1 / 2中各种字符串处理函数(包括memcpy
)的规范特别允许:
如果声明为
size_t n
的参数指定函数数组的长度,则n
在调用该函数时可以为零。 [...]在这样的调用中,定位字符的函数不会发生,比较两个字符序列的函数返回零,而复制字符的函数复制零个字符。
答案 1 :(得分:2)
是的,完全没问题。对memcpy的唯一限制是内存区域不能重叠。