2.c中提供堆區供給開發者分配記憶體空間,動態記憶體分配函式malloc,calloc,realloc
(1)malloc函式的使用,原型為void *malloc(int length)引數為分配記憶體空間的大小:
//將記憶體分配4個位元組給乙個int型指標
//返回值為任何指標
//考慮到不同平台,可以使用sizeof(char)來確定乙個位元組
int *p = malloc(4);
*p = 4;
//要開闢一塊 記憶體空間,首先要明白開發這塊記憶體空間要幹什麼事情
//malloc函式 的記憶體的分配不負責清空內容
char *str = malloc(sizeof(char) * 8);
strcpy(str, "xiansen");
int *array = malloc(sizeof(int) * 6);
//對記憶體的釋放
//無返回值,有乙個引數,任意型別的指標
//釋放記憶體只是對記憶體標記為可用,並沒有對記憶體進行清空
free(p);
free(str);
free(array);
(2)calloc與realloc函式
//calloc函式在奉陪記憶體的時候清空所有內容效率略低
3.記憶體操作函式//引數1:分配多少記憶體
// 引數2:每個記憶體多大
// char *str= calloc(2, sizeof(char));
// 從新分配記憶體大小
// 引數1:給誰分配
// 引數2:重新分配大小
// printf("%p\n", str);
// str = realloc(str, 100);
初始化記憶體:void *memset(void *s , int c , size_t n) //從s位址指向的記憶體開始初始化n個位元組的內容為c;
拷貝記憶體:void *memcpy(void *dest,const void*source , size_t n) //從source指向的位址開始拷貝到dest拷貝n個位元組;
記憶體比較:int memcmp(const void *buf1, const void*buf2, unsigned int count) 比較buf1,buf2的記憶體是否相同,比較count個位元組;
記憶體分配函式
1 malloc 函式 void malloc unsigned int size 在記憶體的動態分配區域中分配乙個長度為size的連續空間,如果分配成功,則返回所分配記憶體空間的首位址,否則返回null,申請的記憶體不會進行初始化。2 calloc 函式 void calloc unsigned ...
常見記憶體分配函式
1 kmalloc 核心函式 include void kmalloc size t size,int flags 最大為 128k void kfree void ptr kmalloc分配一塊物理空間和虛擬空間都連續,大小為size的記憶體。常用的flags標誌有 gfp atomic 用來從中...
linux記憶體分配函式
原型 extern void bzero void s,int n 用法 include include include int main tt char s 20 bzero tt,sizeof tt 原型 extern void memset void buffer,int c,int coun...