Liste des Groupes | Revenir à c arch |
Tim Rentsch wrote:Michael S <already5chosen@yahoo.com> writes:
On Sun, 08 Sep 2024 15:36:39 GMT
anton@mips.complang.tuwien.ac.at (Anton Ertl) wrote:
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?
The check that reliably catches all overlaps seems easy.
E.g. (src <= dst) == (src+len > dst)
Does that work for dst < src? What if dst+len < src?
Les messages affichés proviennent d'usenet.