記憶體操作函式
1、memset() 主要用於清0
/*#include void *memset(void *s, int c, size_t n);
功能:將s的記憶體區域的前n個位元組以引數c填入
引數: c:填充的字元,c雖然引數為int,但必須是unsigned char , 範圍為0~255
n:指定需要設定的大小
*/#include
#include
intmain()
;//處理一些**,把b內部的元素改了
//b[10] = ; //err
int i =0;
int n =
sizeof
(b)/
sizeof
(b[0])
;for
(i =
0; i < n; i++
)memset
(b,0
,sizeof
(b))
;char str[10]
;memset
(str,
'a',
sizeof
(str));
for(i =
0; i <
10; i++
)printf
("\n");
return0;
}int
main01
(int argc,
char
*argv)
2、memcpy() 不會因為』\0』就提前結束
/*
#include void *memcpy(void *dest, const void *src, size_t n);
引數: n:需要拷貝的位元組數
*/#include
#include
intmain()
;int b[10]
;//第3個引數是指拷貝記憶體的總大小
memcpy
(b, a,10*
sizeof
(int))
;memcpy
(b, a,
sizeof
(a))
;//使用memcpy()最好別出現記憶體重疊
//如果出現記憶體重疊,最好使用memmove
//memcpy(&a[2], a, 5*sizeof(int) ); //err
memmove
(&a[2]
, a,5*
sizeof
(int))
;return0;
}int
main01
(int argc,
char
*argv)
memmove()
memmove()功能用法和memcpy()一樣,區別在於:dest和src所指的記憶體空間重疊時,memmove()仍然能處理,不過執行效率比memcpy()低些。
memcmp()
/*
#include int memcmp(const void *s1, const void *s2, size_t n);
功能:比較s1和s2所指向記憶體區域的前n個位元組
引數: n:需比較的前n個位元組
返回值:
相等:=0
大於:>0
小於:<0
*/#include
#include
intmain
(int argc,
char
*argv)
;int b[10]
=;int flag =
memcmp
(a, b,10*
sizeof
(int))
;if(flag <0)
else
if(flag >0)
else
return0;
}
記憶體操作函式
calloc 配置記憶體空間 相關函式 malloc,free,realloc,brk 表頭檔案 include 定義函式 void calloc size t nmemb,size t size 函式說明 calloc 用來配置nmemb個相鄰的記憶體單位,每一單位的大小為size,並返回指向第乙...
記憶體操作函式 malloc
函式 malloc void malloc size t size 在記憶體塊獲取區塊。標頭檔案 malloc.h 返回值 如果分配成功則返回指向被分配記憶體的指標 此儲存區中的初始值不確定 否則返回空指標null。記憶體釋放 當記憶體不再使用時,應使用free 函式將記憶體塊釋放。函式返回的指標一...
記憶體操作函式 realloc
realloc原型是 void realloc void mem address,unsigned int newsize 標頭檔案 stdlib.h和malloc.h 功能 先判斷當前的指標是否有足夠的連續空間,如果有,擴大mem address指向的位址,並且將mem address返回,如果空...