Проблема, кажется, в том, что по стандарту мы имеем право сравнивать на больше-меньше только указатели, которые указывают внутрь одного объекта, нет? Т.е. вообще-то, указатели, которые получены от двух вызовов malloc()'а в совсем-совсем стандартном C не имеют отношения порядка между собой. Стандарт разрешает сравнивать только пойнтеры, которые указывают в одну структуру или массив...
Так что получается, что такой memmove() не очень-то реализуем — мы не можем быть уверены, что мы вообще можем сравнить два переданных нам указателя. Точнее — можем, но можем получить undefined result, который в стандартном C никак не обработать.
И реализация memmove() для какой-нибудь теговой архитектуры потребует обращения к платформо-специфичным средствам определения, одному ли объекту принадлежат указатели.
no subject
Т.е. вообще-то, указатели, которые получены от двух вызовов malloc()'а в совсем-совсем стандартном C не имеют отношения порядка между собой.
Стандарт разрешает сравнивать только пойнтеры, которые указывают в одну структуру или массив...
Так что получается, что такой memmove() не очень-то реализуем — мы не можем быть уверены, что мы вообще можем сравнить два переданных нам указателя. Точнее — можем, но можем получить undefined result, который в стандартном C никак не обработать.
И реализация memmove() для какой-нибудь теговой архитектуры потребует обращения к платформо-специфичным средствам определения, одному ли объекту принадлежат указатели.