overflow-wrap: break-word;border-radius: 4px;background: rgb(248, 248, 248);">memcpy和memmove都是 C 語言的庫函數,相比于?strcpy和?strncpy只能針對于字符類型的數組(),這兩個函數可以拷貝其他類型的數組,對于?memcpy和?memmove的區(qū)別是什么呢?這里,在 Linux 里通過?man命令查看兩個函數的區(qū)別,查詢的結果如下所示,首先是?memcpy函數的闡述。通過上述信息,可以知道,函數原型是:void?*memcpy(void?*dest,?const?void?*src,?size_t?n); 這個函數的功能如上面所說,就是復制src存儲區(qū)域?n個字節(jié)到dest區(qū)域,并且src和dest的內存區(qū)域不能夠重疊。緊接著來看memmove函數,同樣的,來看Linux里的幫助手冊:通過上述信息,可以知道,對于memmove的函數原型是:void?*memmove(void?*dest,?const?void?*src,?size_t?n); 具體函數是什么意思呢?通過上圖中的DESCRIPTION可以看到:memmove()?函數將 n 個字節(jié)從內存區(qū)域?src?復制到內存區(qū)域?dest, 但是相比于memcpy函數不同的是,他的內存區(qū)域可能會重疊:復制的過程就好比是將?src?中的字節(jié)首先被復制到一個不重疊的臨時數組中src?或?dest中,然后將字節(jié)從臨時數組復制到?dest。