記憶體分配函式

2021-06-28 23:51:21 字數 1187 閱讀 8014

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函式在奉陪記憶體的時候清空所有內容效率略低

//引數1:分配多少記憶體

//    引數2:每個記憶體多大

//   char *str= calloc(2, sizeof(char));

//    從新分配記憶體大小

//    引數1:給誰分配

//    引數2:重新分配大小

//    printf("%p\n", str);

//    str =  realloc(str, 100);

3.記憶體操作函式

初始化記憶體: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...