3 ms·
The original 1989 ANSI C specification stated, in "4.11.2.1 The memcpy function": If copying takes place between objects that overlap, the behavior is undefine
by caf 10y ago
The original 1989 ANSI C specification stated, in "4.11.2.1 The memcpy function":
If copying takes place between objects that overlap, the behavior is undefined.
So it has been this way in C since the first official standard. I don't have a first edition K&R so I can't see what that said, though.
- david-given 10y agoHuh. You're quite right. Well, it may have been undefined, but in practice the behaviour was standardised and couldn't be changed without breaking existing code... which is basically C in a nutshell.
- caf 10y agoCode like your example would have been broken by real standard library implementations very early in the piece, because even a forward-copying implementation that does word-at-a-time copies (a straightforward and obvious optimisation with real and significant benefits on many machines of the era) would have broken it.