Liste des Groupes | Revenir à c arch |
Tim Rentsch <tr.17687@z991.linuxsc.com> writes:
>anton@mips.complang.tuwien.ac.at (Anton Ertl) writes:>
>There was still no easy way to determine whether your software>
that calls memcpy() actually works as expected on all hardware,
There may not be a way to tell if memcpy()-calling code will work
on platforms one doesn't have, but there is a relatively simple
and portable way to tell if some memcpy() call crosses over into
the realm of undefined behavior.
1) At first I thought that yes, one could just check whether there
is an overlap of the memory areas. But then I remembered that you
cannot write such a check in standard C without (in the general
case) exercising undefined behaviour;
and then the compiler could eliminate the check or do something
else that's unexpected. Do you have such a check in mind that
does not exercise undefined behaviour in the general case?
2) Even if there is such a check, you have to be aware that there
is a potential problem with memcpy(). In that case the way to go
is to just use memmove().
But that does not help you with the next "clever" idea that some
compiler or library maintainer has.
Les messages affichés proviennent d'usenet.