簡單的記憶體函式的模擬實現

2021-10-20 18:09:36 字數 1605 閱讀 9252

記憶體函式的模擬實現 總結

什麼是記憶體呢?在計算機的組成結構中,有乙個很重要的部分,就是儲存器。儲存器是用來儲存程式和資料的部件,對於計算機來說,有了儲存器,才有記憶功能,才能保證正常工作。儲存器的種類很多,按其用途可分為主儲存器和輔助儲存器,主儲存器又稱記憶體儲器(簡稱記憶體),輔助儲存器又稱外儲存器(簡稱外存)。外存通常是磁性介質或光碟,像硬碟,軟盤,磁帶,cd等,能長期儲存資訊,並且不依賴於電來儲存資訊,但是由機械部件帶動,速度與cpu相比就顯得慢的多。記憶體指的就是主機板上的儲存部件,是cpu直接與之溝通,並用其儲存資料的部件,存放當前正在使用的(即執行中)的資料和程式,它的物理實質就是一組或多組具備資料輸入輸出和資料儲存功能的積體電路,記憶體只用於暫時存放程式和資料,一旦關閉電源或發生斷電,其中的程式和資料就會丟失.簡單點說,記憶體是存放cpu傳來的資料.當然,這些資料是看不到的.

函式從源頭拷貝的位置開始向後複製num個位元組到目的地。資料到目的地的記憶體位置,memcpy函式遇到/0不會停下來,**如下:

#define _crt_secure_no_warnings   1

#include

#include

void

*my_memcpy

(void

*arr2,

const

void

* arr1, size_t count)

//count是位元組個數

return ret;

}int

main()

;int arr2[30]

=;my_memcpy

(arr2, arr1,20)

;//arr2是目的地,arr1是源頭,20是要拷貝的位元組個數

return0;

}

結果如下圖:

memove函式和memcpy函式的定義差不多,只是memove可以重疊拷貝,memcpy不可以重疊拷貝,首先判斷源頭和目的地的位置非常重要,如果源頭在目的地的右邊,則從前向後拷貝,反之源頭在目的地的左邊則從後向前拷貝,**如下:

void

*my_memove

(void

* dest,

const

void

* src, size_t count)

//dest 目的地,src源頭,count位元組個數

}else

}return ret;

}int

main()

;my_memove

(arr +

3, arr,20)

;return0;

}

結果如下圖:

以上就是今天要講的內容,本文僅僅簡單介紹了兩個記憶體函式的使用,模擬實現了兩個函式,如果上述有任何問題,請懂哥指教,不過沒關係,主要是自己能堅持,更希望有一起學習的同學可以幫我指正,但是如果可以請溫柔一點跟我講,愛與和平是永遠的主題,愛各位了。 ![在這裡插入描述](

模擬實現memcpy函式(記憶體拷貝函式)

第一種 include include include void my memcpy void dest,const void src,int count return dest 返回目標空間的起始位址 void show int arr2,int arr1,int sz printf n int ...

strlen函式的模擬實現

strlen所作的僅僅是乙個計數器的工作,它從記憶體的某個位置 可以是字串開頭,中間某個位置,甚至是某個不確定的記憶體區域 開始掃瞄,直到碰到第乙個字串結束符 0 為止,然後返回計數器值 長度不包含 0 模擬實現strlen有以下三種方法 第一種 建立計數器int my strlen char st...

庫函式的模擬實現

模擬實現strlen 方法1 計數器方式 intmy strlen const char str return count 方法2 不能建立零時變數計數器 intmy strlen const char str 方法3 指標 指標的方式 intmy strlen const char str 模擬實...