C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove
前言
內(nèi)存是CPU與外存進(jìn)行溝通的橋梁。
在馮·諾依曼計算機(jī)結(jié)構(gòu)中,存儲器是計算機(jī)的存儲部件,是信息存儲的核心,用來存放程序和數(shù)據(jù)。 存儲器分為內(nèi)存(內(nèi)存儲器、主存儲器)和外存(外存儲器、輔助存儲器)。 CPU能夠直接訪問的存儲器是內(nèi)存。外存用于幫助主存記憶更多的信息,外存內(nèi)的信息必須調(diào)入內(nèi)存后,才能被CPU所使用。因此,內(nèi)存是CPU與外存進(jìn)行溝通的橋梁。
模擬實(shí)現(xiàn)簡單的內(nèi)存函數(shù)
1.memcpy-內(nèi)存拷貝函數(shù)(應(yīng)該拷貝不重疊的內(nèi)存)
![]()
函數(shù)memcpy從source的位置開始向后復(fù)制num個字節(jié)的數(shù)據(jù)到destination的內(nèi)存位置。
這個函數(shù)在遇到 '\0' 的時候并不會停下來。
如果source和destination有任何的重疊,復(fù)制的結(jié)果都是未定義的。

調(diào)試結(jié)果

2.memmove-內(nèi)存拷貝函數(shù)(可以拷貝重疊的內(nèi)存)

和memcpy的差別就是memmove函數(shù)處理的源內(nèi)存塊和目標(biāo)內(nèi)存塊是可以重疊的。 如果源空間和目標(biāo)空間出現(xiàn)重疊,就得使用memmove函數(shù)處理。

調(diào)試結(jié)果

總結(jié)
上述簡單模擬實(shí)現(xiàn)了兩個內(nèi)存函數(shù)的使用,相信大家都學(xué)會了。如果上述文章有任何問題 ,歡迎大佬們提出質(zhì)疑,我會虛心學(xué)習(xí)和改正,最重要的是能共同進(jìn)步,共同成長,學(xué)習(xí)好編程。
到此這篇關(guān)于C語言模擬內(nèi)存函數(shù)分析之mencpy與memmove的文章就介紹到這了,更多相關(guān)C語言 mencpy內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10
字典樹的基本知識及使用C語言的相關(guān)實(shí)現(xiàn)
這篇文章主要介紹了字典樹的基本知識及使用C語言的相關(guān)實(shí)現(xiàn),這也是ACM等計算機(jī)考試和競賽題目的基本知識,需要的朋友可以參考下2015-08-08
C/C++實(shí)現(xiàn)經(jīng)典象棋游戲的示例代碼
中國象棋是起源于中國的一種棋,屬于二人對抗性游戲的一種,在中國有著悠久的歷史。本文將利用C++實(shí)現(xiàn)這一經(jīng)典游戲,快跟隨小編一起學(xué)習(xí)一下吧2022-06-06
淺析VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} $
這篇文章主要介紹了VSCode launch.json中的各種替換變量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等,非常不錯具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Linux系統(tǒng)中C語言編程創(chuàng)建函數(shù)fork()執(zhí)行解析
最近在看進(jìn)程間的通信,看到了fork()函數(shù),雖然以前用過,這次經(jīng)過思考加深了理解。現(xiàn)總結(jié)如下2013-04-04
C++實(shí)現(xiàn)公司人事管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)公司人事管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03

