std::memmove
Определено в заголовочном файле <cstring>
|
||
void* memmove( void* dest, const void* src, std::size_t count ); |
||
Копирует count символов из объекта, на который указывает src, в объект, на который указывает dest. Оба объекта интерпретируются как массивы unsigned char.
Объекты могут перекрываться: копирование происходит так, как если бы символы были скопированы во временный массив символов, а затем были скопированы из массива в dest.
Если dest или src является недействительным или нулевым указателем, поведение не определено, даже если count равно нулю.
Если объекты являются потенциально перекрывающимися и не являются TriviallyCopyable, поведение memmove
не указано и может быть неопределённым.
Содержание |
[править] Параметры
dest | — | указатель на ячейку памяти, в которую нужно копировать |
src | — | указатель на ячейку памяти, из которой нужно копировать |
count | — | количество байтов для копирования |
[править] Возвращаемое значение
dest
[править] Примечание
std::memmove
может использоваться для неявного создания объектов в целевом буфере.
Несмотря на то, что указано, что используется временный буфер, реальные реализации этой функции не несут накладных расходов на двойное копирование или дополнительную память. Для небольших значений count она может загружать и записывать регистры; для более крупных блоков общий подход (glibc и bsd libc) заключается в копировании байтов вперёд от начала буфера, если буфер назначения начинается до источника, и назад от конца иначе с возвратом к std::memcpy, когда перекрытия вообще нет.
Где ограничения на псевдонимы запрещают проверять одну и ту же память как значения двух разных типов, для преобразования значений можно использовать std::memmove
.
[править] Пример
Вывод:
1234567890 1234456890
[править] Смотрите также
копирует один буфер в другой (функция) | |
заполняет буфер символом (функция) | |
копирует определённое количество широких символов между двумя, возможно, перекрывающимися массивами (функция) | |
(C++11) |
копирует диапазон элементов в новое место (шаблон функции) |
копирует диапазон элементов в обратном порядке (шаблон функции) | |
(C++11) |
проверяет, можно ли тривиально скопировать тип (шаблон класса) |
Документация C по memmove
|