成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

內(nèi)存函數(shù)實(shí)現(xiàn)和詳解

alin / 1621人閱讀

摘要:注重點(diǎn)介紹函數(shù)。發(fā)現(xiàn)不能拷貝部分重疊內(nèi)存情況但是,在編譯器中,庫函數(shù)和的功能一樣強(qiáng)大,所以用編譯器就會(huì)導(dǎo)致兩個(gè)結(jié)果一樣黑體然而其他的編譯器不一定會(huì)讓變得這樣強(qiáng)大。若是改變成其他大的類型容易造成內(nèi)存的浪費(fèi)。

??注:重點(diǎn)介紹 memcpy ,memmove 函數(shù)。

話不多說,正文開始??

memcpy 與 memmove函數(shù)

傳參和返回



觀察發(fā)現(xiàn),這兩個(gè)函數(shù)的參數(shù)和返回類型一樣,是否會(huì)覺得這兩個(gè)函數(shù)有什么聯(lián)系呢?
請(qǐng)看下文

memmove 函數(shù)實(shí)現(xiàn)

void* my_memmove(void* dest,const void* src, size_t count){	assert(dest && src);	int  i = 0;	if(dest > src)//dest指向位置比src指向位置靠后		while (count--)//從后往前拷貝		{			*((char*)dest + count) = *((char*)src + count);		}	else	{		while (i != count)//從前往后拷貝		{			*((char*)dest + i) = *((char*)src + i);			i++;		}	}	return (char*)dest;}

memcpy 函數(shù)實(shí)現(xiàn)

void* my_memcpy(void* dest, const void* src, size_t count){	assert(src && dest);	while (count--)	{		*((char*)dest + count) = *((char*)src + count);	}	return dest;}

運(yùn)行結(jié)果

這里可以看到其實(shí)兩種函數(shù)的結(jié)果并不一樣。,發(fā)現(xiàn)strcpy不能拷貝部分 重疊內(nèi)存 情況
但是,在VS2019編譯器中,庫函數(shù) memcpymemmove 的功能一樣強(qiáng)大,所以用VS編譯器就會(huì)導(dǎo)致兩個(gè)結(jié)果一樣,然而其他的編譯器不一定會(huì)讓 memcpy 變得這樣強(qiáng)大。

void* 為什么要強(qiáng)制類型轉(zhuǎn)化為 char* ?

  • 首先void*類型的變量是不能被賦值的
  • 其次轉(zhuǎn)化為char* 可以精確改變每個(gè)字節(jié)的內(nèi)存(因?yàn)閏har是一個(gè)字節(jié),類型改變的是指針的步長(zhǎng))。從而達(dá)到改變一個(gè)整型。
  • 若是改變成其他大的類型容易造成內(nèi)存的浪費(fèi)。而且可以兼容所有類型的內(nèi)存的改變。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/121536.html

相關(guān)文章

  • 詳解js閉包

    摘要:但閉包的情況不同嵌套函數(shù)的閉包執(zhí)行后,,然后還在被回收閉包會(huì)使變量始終保存在內(nèi)存中,如果不當(dāng)使用會(huì)增大內(nèi)存消耗。每個(gè)函數(shù),不論多深,都可以認(rèn)為是全局的子作用域,可以理解為閉包。 閉包(closure)是Javascript語言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)。 閉包的特性 閉包有三個(gè)特性: 1.函數(shù)嵌套函數(shù) 2.函數(shù)內(nèi)部可以引用外部的參數(shù)和變量 3.參數(shù)和變量不會(huì)...

    Chiclaim 評(píng)論0 收藏0
  • C語言-常用內(nèi)存函數(shù)詳解+模擬實(shí)現(xiàn)

    前言:博主之前有已經(jīng)寫過了C語言常用字符函數(shù)詳解+模擬實(shí)現(xiàn),感興趣的同學(xué)可以去圍觀一下哦! 目錄 前言: 1.內(nèi)存函數(shù) memcpy() ?memmove() memcmp() memset() 2.錯(cuò)誤信息報(bào)告函數(shù) strerror() ?perror() 1.內(nèi)存函數(shù) memcpy() 作用:內(nèi)存拷貝 函數(shù)原型: 注意:count:要拷貝的字節(jié)數(shù) 函數(shù)memcpy從src位置開始向后賦值c...

    cucumber 評(píng)論0 收藏0
  • Javascript 閉包詳解

    摘要:一般函數(shù)執(zhí)行完畢,局部活動(dòng)對(duì)象就會(huì)被銷毀,內(nèi)存中僅僅保存全局作用域,但是閉包會(huì)長(zhǎng)期駐扎在內(nèi)存。我只是想通過這兩個(gè)例子來說明閉包的用處和好處。閉包會(huì)使變量始終保存在內(nèi)存中,如果使用不當(dāng)會(huì)增大內(nèi)存消耗。 閉包特性 函數(shù)嵌套函數(shù) 函數(shù)內(nèi)部可以引用外部的參數(shù)和變量 參數(shù)和變量不會(huì)被垃圾回收機(jī)制回收 閉包的作用 具體作用是有權(quán)訪問函數(shù)內(nèi)部的變量,最常見的就是函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),通過另一個(gè)函數(shù)...

    ztyzz 評(píng)論0 收藏0
  • ES5的原型鏈ES6的類實(shí)現(xiàn)詳解

    摘要:類才支持實(shí)例屬性代碼解讀上面暫時(shí)只是概念性的寫法,事實(shí)上,的類只是一個(gè)原型鏈的語法糖而已,主要是從寫法上更接近于面相對(duì)象的類而已,另外一個(gè)作用就是區(qū)分的構(gòu)造函數(shù)和函數(shù)之間的區(qū)分。 ES5的原型鏈和ES6的類實(shí)現(xiàn)詳解 JavaScript最初設(shè)計(jì)時(shí)受到了面相對(duì)象編程的影響,從而引入了new關(guān)鍵字,來實(shí)例化對(duì)象。而在ES5中new后面跟著的是構(gòu)造函數(shù)(也是函數(shù)),而到了ES6則改成了cla...

    王偉廷 評(píng)論0 收藏0
  • ES5的原型鏈ES6的類實(shí)現(xiàn)詳解

    摘要:類才支持實(shí)例屬性代碼解讀上面暫時(shí)只是概念性的寫法,事實(shí)上,的類只是一個(gè)原型鏈的語法糖而已,主要是從寫法上更接近于面相對(duì)象的類而已,另外一個(gè)作用就是區(qū)分的構(gòu)造函數(shù)和函數(shù)之間的區(qū)分。 ES5的原型鏈和ES6的類實(shí)現(xiàn)詳解 JavaScript最初設(shè)計(jì)時(shí)受到了面相對(duì)象編程的影響,從而引入了new關(guān)鍵字,來實(shí)例化對(duì)象。而在ES5中new后面跟著的是構(gòu)造函數(shù)(也是函數(shù)),而到了ES6則改成了cla...

    Warren 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<