4 ms·
A nitpick: memcpy example is flawed: memcpy's behavior is undefined if source and destination overlap. One should use memmove for that.
by mynegation 15y ago
A nitpick: memcpy example is flawed: memcpy's behavior is undefined if source and destination overlap. One should use memmove for that.
- pascal_cuoq 15y agoThis was my initial reaction, but he is talking about a function that happens to be named memcpy() and what the compiler is allowed to do with the provided source code. So you should actually blame him for defining a function with the same name as a standard function (an undefined behavior). What would make his example correct is to use any name other than a reserved one, that is, not "memmove".
- udp 15y agoIf you look more closely, he actually called it "memcopy", not "memcpy".
- faithful_droog 15y agoIf you look more closely, you will also see that his memcopy dereferences a void * (and performs some pointer arithmetic as well). Apologies for my inner pedant getting the better of me.
- gaius 15y agoRight, but the point is that there's no way for the compiler to "know" that.