The original 1989 ANSI C specification stated, in <i>&quot;4.11.2.1 The memcpy function&quot;</i>:<p><i>If copying takes place between objects that overlap, the behavior is undefined.</i><p>So it has been this way in C since the first official standard.  I don&#x27;t have a first edition K&amp;R so I can&#x27;t see what that said, though.