1 malloc--申請動态記憶體空間
—void *malloc(size_t size)
malloc函數向系統申請比對size個位元組的記憶體空間。并傳回一個指向這塊空間的指針
如果函數調用成功,傳回一個指針申請的記憶體空間的指針,由于傳回類型是void指針(void *),
是以他可以被轉換成任何類型的資料;如果函數調用失敗,傳回值是NULL。另外,
如果size的參數設定為0,傳回值也可能是NULL,但是這不是調用失敗。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ptr;
ptr = (int *)malloc(sizeof(int));
if(ptr == NULL)
{
printf("配置設定記憶體失敗\n");
exit(1);
}
printf("請輸入一個整數:");
scanf("%d",ptr);
printf("你輸入的整數是:%d\n",*ptr);
return 0;
}
2 free--釋放動動态記憶體空間
—void free(void *ptr);
free函數釋放ptr參數指向的記憶體空間。該記憶體空間必須是由malloc、callloc或realloc函數
申請的。否則,該函數将導緻未定義行為。如果ptr參數是NULL,則不執行任何操作。
注意:該函數并不會修改ptr參數的值,是以調用後,它仍然指向原來的地方。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ptr;
ptr = (int *)malloc(sizeof(int));
if(ptr == NULL)
{
printf("配置設定記憶體失敗\n");
exit(1);
}
printf("請輸入一個整數:");
scanf("%d",ptr);
printf("你輸入的整數是:%d\n",*ptr);
free(ptr);
return 0;
}
3 calloc--申請并初始化一系列記憶體空間
void *calloc(size_t nmenb, size_t size);
calloc函數在記憶體中動态的申請nmemb個長度為size的連續記憶體空間
(即申請的總空間尺寸為nmeb *size),這些記憶體空間全部被初始化為0。
calloc函數在申請完之後,自動初始化該記憶體空間為0;
malloc函數不進行初始化操作,裡面的資料是随機的。
4 realloc--重新配置設定記憶體空間
void *realloc(void *ptr, size_t size);
readlloc函數修改ptr指向的記憶體空間大小為size位元組
如果重新配置設定的記憶體空間比原來的大,則舊記憶體塊的資料不會發生改變;
如果新的記憶體空間比原來的小,可能會丢失資料。
memset:使用一個常量位元組填充記憶體空間
memcpy:拷貝記憶體空間
memmove:拷貝記憶體空間
mencmp:比較記憶體空間
memchr:在記憶體空間中搜尋一個字元