memcpy(p,p,len)

Mark Mielke mark@mark.mielke.cc
Fri Apr 30 14:32:00 GMT 2010


Just a quick comment than Jan-Benedict's opinion is widely shared by the 
specification and by the Linux glibc manpage:

DESCRIPTION
        The  memcpy()  function  copies  n bytes from memory area src to 
memory
        area dest.  The memory areas should not overlap.  Use memmove(3) 
if the
        memory areas do overlap.

It doesn't matter if it sometimes works. Sometimes works programs are 
sometimes doesn't work programs. :-)

Cheers,
mark

On 04/30/2010 10:25 AM, Jan-Benedict Glaw wrote:
> On Fri, 2010-04-30 16:14:36 +0200, Joakim Tjernlund<joakim.tjernlund@transmode.se>  wrote:
>    
>> Jan-Benedict Glaw<jbglaw@lug-owl.de>  wrote on 2010/04/30 16:10:42:
>>      
>>> On Fri, 2010-04-30 16:08:15 +0200, Joakim Tjernlund
>>> <joakim.tjernlund@transmode.se>  wrote:
>>>        
>>>> Is memcpy supposed to work when the src and dest are the same:
>>>> memcpy(p, p, 100);
>>>>          
>>> It may work, but you cannot rely on it. Use memmove() alternatively.
>>>        
>> My view too, but gcc 3.4.6 on gcc does this:
>>      
> [...]
>
> Surely, it may/will work here and there. But it's not portable :)  And
> I won't rely on a "it worked once" fact.
>
> MfG, JBG
>
>    



More information about the Gcc mailing list