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