記憶體操作函式(C)

2021-07-16 17:05:37 字數 2025 閱讀 7891

1. 名稱:malloc / calloc 

功能:動態記憶體分配函式

標頭檔案:#include

函式原型:void *malloc(size_t size);

void *calloc(int num, size_t size);

其中:num為分配記憶體塊的個數,size為分配記憶體塊的大小

返回值:分配成功返回分配記憶體塊的首位址,失敗返回null。

區別:(1)malloc一次只能申請乙個記憶體區,calloc一次可以申請多個記憶體區;

(2)malloc不會對分配的記憶體初始化,calloc會初始化為0。

2. 名稱:free

功能:動態記憶體釋放函式

標頭檔案:#include

函式原型:void free(void *ptr);

ptr為malloc或calloc等記憶體分配函式返回的記憶體指標。

返回值:無

注:malloc和calloc跟free是一一對應的關係,若動態分配記憶體沒有free釋放,容易造成記憶體洩露。

3. 名稱:memcpy

功能:拷貝記憶體空間

標頭檔案:#include

函式原型:void *memcpy(void *dest, void *src, size_t n);

其中:dest為目標記憶體區,src為源記憶體區,n為需要拷貝的位元組數

返回值:指向dest的指標

侷限性:未考慮記憶體重疊情況

函式實現:

[cpp]view plain

copy

void

*memcpy(

void

*dest, 

void

*src, 

size_t

n)  

return

ret;  

}  

4. 名稱:memmove

功能:拷貝(移動)記憶體空間

標頭檔案:#include

函式原型:void *memmove(void *dest, void *src, size_t n);

其中:dest為目標記憶體區,src為源記憶體區,n為需要拷貝的位元組數

返回值:指向dest的指標

相比memcpy:當dest與src重疊時,仍能正確處理,但是src內容會被改變

函式實現:

[cpp]view plain

copy

void

*memmove(

void

*dest, 

void

*src, 

size_t

n)  

}  else

}  return

ret;  

}  

5. 名稱:memset

功能:初始化指定記憶體空間

標頭檔案:#include

函式原型:void *memset(void *buffer, int c, size_t n);

其中:buffer為分配的記憶體,c為初始化你內容,n為初始化的位元組數

返回值:指向buffer的指標

特別注意:memset是按位元組為單位對buffer指向的記憶體賦值

例:int a[5];

memset(a, 3, 5*sizeof(int)); //錯誤

上述情況下每個int元素被初始化為:00000011 00000011 00000011 00000011

memset(a, 0, 5*sizeof(int)); //正確,全部初始化為0

6. 名稱:memcmp

功能:比較兩個記憶體空間的字元

標頭檔案:#include

函式原型:int memcmp(const void *buf1, const void *buf2, size_t n);

其中:n為要比較的字元數

返回值:當buf1 > buf2時,返回 > 0;當buf1 = buf2時,返回 = 0;當buf1 < buf2時,返回 < 0。

C記憶體操作函式

1 c語言跟記憶體分配方式 1 從靜態儲存區域分配.內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在.例如全域性變數 static變數.2 在棧上建立 在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放.棧記憶體分配運算內置於處理器的指...

C 記憶體操作函式

void memcpy void dest void src,size t length 函式 函式從src的起始位置複製length個位元組到dest的記憶體起始位置,它並不關心資料型別,只是逐字節的進行複製。注意點 1 dest指標要分配足夠的空間,大於或等於 length個位元組的空間。如果沒...

c語言記憶體操作函式

一 malloc calloc 名稱 malloc calloc 功能 動態記憶體分配函式 標頭檔案 include h 函式原形 void malloc size t size void calloc size t num,size t size 引數 size 分配記憶體塊的大小 num分配記憶...