คำถามติดแท็ก memmove

11
memcpy () vs memmove ()
ฉันพยายามที่จะเข้าใจความแตกต่างระหว่างmemcpy()และmemmove()และฉันได้อ่านข้อความที่memcpy()ไม่ดูแลแหล่งที่มาและปลายทางที่ทับซ้อนกันในขณะที่memmove()ทำ อย่างไรก็ตามเมื่อฉันรันทั้งสองฟังก์ชั่นนี้บนบล็อคหน่วยความจำที่ทับซ้อนกันทั้งคู่ก็ให้ผลลัพธ์เหมือนกัน ตัวอย่างเช่นใช้ตัวอย่าง MSDN ต่อไปนี้ในmemmove()หน้าวิธีใช้: - มีตัวอย่างที่ดีกว่าที่จะเข้าใจข้อเสียmemcpyและวิธีการmemmoveแก้ไขหรือไม่ // crt_memcpy.c // Illustrate overlapping copy: memmove always handles it correctly; memcpy may handle // it correctly. #include <memory.h> #include <string.h> #include <stdio.h> char str1[7] = "aabbcc"; int main( void ) { printf( "The string: %s\n", str1 ); memcpy( str1 + 2, str1, …
157 c  memcpy  memmove 


2
ฉันสามารถเรียก memcpy () และ memmove () โดยตั้งค่า "จำนวนไบต์" เป็นศูนย์ได้หรือไม่
ฉันจำเป็นต้องปฏิบัติต่อกรณีหรือไม่เมื่อฉันไม่มีสิ่งใดให้เคลื่อนย้าย / คัดลอกโดยมีmemmove()/ memcpy()เป็นกรณีขอบ int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } หรือฉันควรเรียกใช้ฟังก์ชันโดยไม่ตรวจสอบ int numberOfBytes = ... memmove( dest, source, numberOfBytes ); การตรวจสอบข้อมูลโค้ดในอดีตจำเป็นหรือไม่
104 c++  c  pointers  memcpy  memmove 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.