void *my_memcpy(void *dest, const void *source, size_t count) { char *dest_ptr = static_cast<char *>(dest); const char *src_ptr = static_cast<const char *>(source); if (src_ptr < dest_ptr && src_ptr + count > dest_ptr ) { for (size_t i = count - 1; i != -1; --i) { dest_ptr[i] = src_ptr[i]; } } else { for (size_t i = 0; i < count; ++i) { dest_ptr[i] = src_ptr[i]; } } return dest; }