国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

內存函數實現和詳解

alin / 1595人閱讀

摘要:注重點介紹函數。發現不能拷貝部分重疊內存情況但是,在編譯器中,庫函數和的功能一樣強大,所以用編譯器就會導致兩個結果一樣黑體然而其他的編譯器不一定會讓變得這樣強大。若是改變成其他大的類型容易造成內存的浪費。

??注:重點介紹 memcpy ,memmove 函數。

話不多說,正文開始??

memcpy 與 memmove函數

傳參和返回



觀察發現,這兩個函數的參數和返回類型一樣,是否會覺得這兩個函數有什么聯系呢?
請看下文

memmove 函數實現

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 函數實現

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

運行結果

這里可以看到其實兩種函數的結果并不一樣。,發現strcpy不能拷貝部分 重疊內存 情況
但是,在VS2019編譯器中,庫函數 memcpymemmove 的功能一樣強大,所以用VS編譯器就會導致兩個結果一樣,然而其他的編譯器不一定會讓 memcpy 變得這樣強大。

void* 為什么要強制類型轉化為 char* ?

  • 首先void*類型的變量是不能被賦值的
  • 其次轉化為char* 可以精確改變每個字節的內存(因為char是一個字節,類型改變的是指針的步長)。從而達到改變一個整型。
  • 若是改變成其他大的類型容易造成內存的浪費。而且可以兼容所有類型的內存的改變。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121536.html

相關文章

  • 詳解js閉包

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

    Chiclaim 評論0 收藏0
  • C語言-常用內存函數詳解+模擬實現

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

    cucumber 評論0 收藏0
  • Javascript 閉包詳解

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

    ztyzz 評論0 收藏0
  • ES5的原型鏈ES6的類實現詳解

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

    王偉廷 評論0 收藏0
  • ES5的原型鏈ES6的類實現詳解

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

    Warren 評論0 收藏0

發表評論

0條評論

alin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<