PDA

View Full Version : [C] - memcpy e memmove, differenze


ilgrigio
26-04-2006, 18:28
secondo la documentazione le funzioni memcpy e memmove sono diverse, ma in pratica nei casi che ho provato danno lo stesso risultato. sono state rese uguali o ci sono casi in cui i risultati sono diversi?

grazie

andbin
26-04-2006, 20:49
secondo la documentazione le funzioni memcpy e memmove sono diverse, ma in pratica nei casi che ho provato danno lo stesso risultato. sono state rese uguali o ci sono casi in cui i risultati sono diversi?Riporto qui di seguito parte delle pagine di "man" su Linux.

The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas may not overlap. Use memmove(3) if the memory areas do overlap.
The memmove() function copies n bytes from memory area src to memory area dest. The memory areas may overlap.
La differenza mi sembra evidente, è una questione di sovrapposizione delle aree.

ilgrigio
26-04-2006, 23:00
giusto. questo è quanto dicono le documentazioni ma poi usando la memcpy anche se c'è overlap da lo stesso risultato di memmove.

AnonimoVeneziano
26-04-2006, 23:12
Il problema è che mentre con memcpy() il comportamento in quel caso non è prevedibile con memmove() in quel caso c'è un comportamento ben determinato.

In sintesi memcpy() potrebbe funzionare ora, ma in un altra occasione potrebbe procurare un altro risultato :)

Ciao

ilgrigio
27-04-2006, 01:09
in realtà il mio scopo è proprio di trovare almeno una di queste occasioni che da risultati inaspettati.