Говард Чу пишет:
В последней спецификации C невозможно написать "легальную" реализацию malloc или memcpy.
Это правильно? У меня сложилось впечатление, что в прошлом цель (по крайней мере) стандарта заключалась в том, что что-то вроде этого будет работать:
void * memcpy(void * restrict destination, const void * restrict source, size_t nbytes)
{
size_t i;
unsigned char *dst = (unsigned char *) destination;
const unsigned char *src = (const unsigned char *) source;
for (i = 0; i < nbytes; i++)
dst[i] = src[i];
return destination;
}
Какие правила в последнем стандарте C здесь нарушены? Или какая часть спецификации memcpy
неправильно реализована этим кодом?