[devel] memcpy глючит (или я не умею его готовить)

Vladimir Didenko vladimir.didenko на gmail.com
Пт Фев 22 23:51:20 MSK 2019


пт, 22 февр. 2019 г. в 22:29, Leonid Krivoshein:
> 21.02.2019 16:25, Alexey V. Vissarionov пишет:
> > (_data.size % 2) лично я поменял бы на (_data.size & 0x01)
>
> Да, так на порядок быстрее.

Это одинаково. Не надо оптимизировать за компилятор, он с этим и сам
неплохо справляется (иногда, даже чересчур)

>
> Тут ко всему не очевидное поведение компилятора при работе с адресами,
> когда их складывают с целыми (много от чего зависит и в ряде случаев
> просто на ворнинги можно нарваться). Такой код в любом случае сразу
> переписывать на более безопасный, независимо от memcpy()/memmove().
> Например, так:
>
> memmove(&_data.data[8], &data.data[9], _data.size - 9); /* если тип
> данных [unsigned] char */
>

Вы глупость написали. Арифметика указателей и целых чисел вполне
определена и безопасна, если не выходить за границы массива. И еще -
запись p + 8 и &p[8] равносильны согласно стандарту языка C.


-- 
С уважением,
Владимир.


Подробная информация о списке рассылки Devel