Мне нужно переместить содержимое байтового буфера. Естественно, я начал писать memcpy
, но потом понял, что может быть спецификатор restrict
для источника и dest. Моя реализация (MSVC 2013), похоже, не имеет этого. Cppreference перечисляет две версии memcpy
с и без restrict
, но я не понимаю - я не думаю, что это перегрузки, и мне непонятно, как компилятор мог правильно определить, какой из них выбрать. С другой стороны, функция memcpy
может анализировать адреса и аргумент count
во время выполнения, чтобы определить, перекрываются ли диапазоны адресов или нет.Разрешено ли совпадение аргументов src и dest memcpy?
Итак, разрешено ли звонить memcpy
с перекрывающимися аргументами? Если нет, есть ли способ выполнить эту операцию, которая лучше, чем обычная for
?
Документация 'memcpy' довольно явная, не так ли? –