这样使用memcpy是否安全?

lin*_*uza -2 c review memcpy

memcpy(buf, buf + (pos - offset), len);
Run Code Online (Sandbox Code Playgroud)

然而,

0<=pos<=strlen(buf), 0<=offset<=strlen(buf)
Run Code Online (Sandbox Code Playgroud)

memcpy()在这种情况下使用是否安全?如果没有,会出现什么问题?请提出最佳做法.

Jab*_*cky 8

不,不是.请memmove改用.

如果使用时内存区域重叠memcpy,则行为未定义.虽然它可能看起来有效,取决于实现.

参考文献: