Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::memmove

      From cppreference.com
      <cpp‎ |string‎ |byte
       
       
       
       
      Defined in header<cstring>
      void* memmove(void* dest,constvoid* src,std::size_t count);

      Performs the following operations in order:

      1. Implicitly creates objects atdest.
      2. Copiescount characters (as if of typeunsignedchar, the same below) from the object pointed to bysrc into a temporary arrayarr ofcount characters, wherearr does not overlap the objects pointed to bydest andsrc.
      3. Copiescount characters fromarr into the object pointed to bydest.

      Ifdest orsrc is anull pointer orinvalid pointer, the behavior is undefined.

      Contents

      [edit]Parameters

      dest - pointer to the memory location to copy to
      src - pointer to the memory location to copy from
      count - number of bytes to copy

      [edit]Return value

      If there is asuitable created object, returns a pointer to it; otherwise returnsdest.

      [edit]Notes

      Despite the specification says a temporary buffer is used, actual implementations of this function do not incur the overhead of double copying or extra memory. For smallcount, it may load up and write out registers; for larger blocks, a common approach (glibc and bsd libc) is to copy bytes forwards from the beginning of the buffer if the destination starts before the source, and backwards from the end otherwise, with a fall back tostd::memcpy when there is no overlap at all.

      Wherestrict aliasing prohibits examining the same memory as values of two different types,std::memmove may be used to convert the values.

      [edit]Example

      Run this code
      #include <cstring>#include <iostream> int main(){char str[]="1234567890";std::cout<< str<<'\n';    std::memmove(str+4, str+3,3);// copies from [4, 5, 6] to [5, 6, 7]std::cout<< str<<'\n';}

      Output:

      12345678901234456890

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 4064C++98it was unclear whether the returned pointer points to a suitable created objectmade clear

      [edit]See also

      copies one buffer to another
      (function)[edit]
      fills a buffer with a character
      (function)[edit]
      copies a certain amount of wide characters between two, possibly overlapping, arrays
      (function)[edit]
      copies a range of elements to a new location
      (function template)[edit]
      copies a range of elements in backwards order
      (function template)[edit]
      checks if a type is trivially copyable
      (class template)[edit]
      C documentation formemmove
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/string/byte/memmove&oldid=180358"

      [8]ページ先頭

      ©2009-2025 Movatter.jp