c语言’内存清除函数,c语言常用内存处理函数
memset()
#includevoid*memset(void*s,int c,size_t n);
功能:
將s的內(nèi)存區(qū)域的前n個(gè)字節(jié)以參數(shù)c填入(用來(lái)初始化)
參數(shù):
s:需要操作內(nèi)存s的首地址
c:填充的字符,c雖然參數(shù)為int,但必須是unsigned char,范圍為0-255
n:指定需要設(shè)置的大小
返回值:
s的首地址
memcpy()
#includevoid *memcpy(void *dest,const void *src,size_t n)
功能:
拷貝src所指的內(nèi)存內(nèi)容的前n個(gè)字節(jié)到dest所指的內(nèi)存地址上
參數(shù):
dest :目的內(nèi)存首地址
src:源內(nèi)存首地址
n:需要拷貝的字節(jié)數(shù)
注意:dest所指內(nèi)存和src所指內(nèi)存地址不可以重疊
例:
int arr[]={1,2,3,4,5,6,7,8,9};
int*p=arr;
p++;
memcpy(p,arr,36);//錯(cuò)誤
此時(shí)p所指地址和arr所指地址有重疊
返回值:
dest的首地址
與strcpy()區(qū)別
函數(shù)參數(shù)不同
strcpy()拷貝字符串memcpy()可以拷貝一塊內(nèi)存
拷貝結(jié)束標(biāo)志不同,strcpy()以\0結(jié)尾,memcpy()以個(gè)數(shù)為結(jié)尾
mommove()
#includevoid *memcpy(void *dest,const void *src,size_t n)
功能:
拷貝src所指的內(nèi)存內(nèi)容的前n個(gè)字節(jié)到dest所指的內(nèi)存地址上
拷貝重疊內(nèi)存地址不會(huì)出現(xiàn)問(wèn)題,但是效率比較低,如果拷貝源與拷貝沒(méi)有重疊,效率與memcpy一樣
memcmp()
#includeint memcmp(const void*s1,const void*s2,size_t n);
功能:
比較s1和s2所指向內(nèi)存區(qū)域的前n個(gè)字節(jié)大小
參數(shù):
s1:內(nèi)存首地址1
s2:內(nèi)存首地址2
n:需比較的前n個(gè)字節(jié)
返回值:
相等:=0
大于:>0
小于:<0
free(堆空間釋放)
#includevoid free(void* ptr);
功能:
釋放ptr所指向的一塊內(nèi)存空間,ptr是一個(gè)任意類型的指針變量,指向被釋放區(qū)域的首地址,對(duì)同一內(nèi)存空間多次釋放會(huì)出錯(cuò)
參數(shù):
ptr:需要釋放空間的首地址,被釋放區(qū)應(yīng)是由malloc函數(shù)所分配的區(qū)域
返回值:
無(wú)
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的c语言’内存清除函数,c语言常用内存处理函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: c的关于数组初始化 和 memset用法
- 下一篇: 为什么int型的数组用memset不能清