第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

memcpy()vs memmove()

memcpy()vs memmove()

C
慕蓋茨4494581 2019-10-05 14:32:01
我想了解的區(qū)別memcpy()和memmove(),和我讀的文本memcpy(),而沒(méi)有照顧重疊源和目的地memmove()一樣。但是,當(dāng)我在重疊的存儲(chǔ)塊上執(zhí)行這兩個(gè)功能時(shí),它們都給出相同的結(jié)果。例如,在memmove()幫助頁(yè)面上采用以下MSDN示例:-有沒(méi)有更好的例子來(lái)了解它的缺點(diǎn)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, 4 );    printf( "New string: %s\n", str1 );    strcpy_s( str1, sizeof(str1), "aabbcc" );   // reset string    printf( "The string: %s\n", str1 );    memmove( str1 + 2, str1, 4 );    printf( "New string: %s\n", str1 );}輸出:The string: aabbccNew string: aaaabbThe string: aabbccNew string: aaaabb
查看完整描述

3 回答

?
MMMHUHU

TA貢獻(xiàn)1834條經(jīng)驗(yàn) 獲得超8個(gè)贊

對(duì)于您的示例沒(méi)有任何奇怪的行為,我并不感到完全驚訝。嘗試復(fù)制str1到str1+2,然后看看會(huì)發(fā)生什么。(實(shí)際上可能沒(méi)有什么不同,取決于編譯器/庫(kù)。)


通常,memcpy以簡(jiǎn)單(但快速)的方式實(shí)現(xiàn)。簡(jiǎn)單地說(shuō),它只是按順序循環(huán)數(shù)據(jù),從一個(gè)位置復(fù)制到另一個(gè)位置。這可能會(huì)導(dǎo)致在讀取源時(shí)將其覆蓋。


Memmove會(huì)做更多的工作來(lái)確保正確處理重疊。


編輯:


(不幸的是,我找不到合適的例子,但是這些都可以)。對(duì)比此處顯示的memcpy和memmove實(shí)現(xiàn)。memcpy只是循環(huán),而memmove執(zhí)行測(cè)試以確定循環(huán)方向,以免破壞數(shù)據(jù)。這些實(shí)現(xiàn)非常簡(jiǎn)單。大多數(shù)高性能的實(shí)現(xiàn)更為復(fù)雜(涉及一次復(fù)制字大小的塊而不是字節(jié))。


查看完整回答
反對(duì) 回復(fù) 2019-10-05
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

中的內(nèi)存memcpy 不能重疊,否則您可能會(huì)面臨不確定的行為,而其中的內(nèi)存memmove可能會(huì)重疊。


char a[16];

char b[16];


memcpy(a,b,16);           // valid

memmove(a,b,16);          // Also valid, but slower than memcpy.

memcpy(&a[0], &a[1],10);  // Not valid since it overlaps.

memmove(&a[0], &a[1],10); // valid. 

memcpy的某些實(shí)現(xiàn)可能仍適用于重疊的輸入,但是您不能指望這種行為。雖然記憶必須允許重疊。


查看完整回答
反對(duì) 回復(fù) 2019-10-05
  • 3 回答
  • 0 關(guān)注
  • 620 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)