動態(tài)分配內存原因
1浮禾、存儲的數(shù)據(jù)需要延長生命周期
2交胚、一個指針變量需要存儲數(shù)據(jù)份汗,變量本身只能存地址,不可存數(shù)據(jù)蝴簇,需要分配內存空間來存儲數(shù)據(jù)
c語言為內存的分配和管理提供了幾個函數(shù)(導入庫為<stdlib.h>)
- void malloc(int num,int size);
在內存中動態(tài)的分配num個長度為size的連續(xù)空間杯活,并將每一個字節(jié)都初始化為0,所以它的結果是分配了numsize個字節(jié)長度的內存空間军熏,并且每一個字節(jié)值都為0.- void free (void *address);
該函數(shù)釋放address所指向的內存塊轩猩,釋放的是動態(tài)分配的內存空間卷扮。- void*malloc(int num);
在堆區(qū)分配一塊指定大小的內存空間荡澎,用來存放數(shù)據(jù),這塊內存空間在函數(shù)執(zhí)行完成后不會被初始化晤锹,它們的值是未知的摩幔。- void *relloc(void *address,int newsize);
重新分配內存,把內存擴展到newsize鞭铆。
內存分配
用指針變量接收數(shù)據(jù)或衡,必須為指針變量分配一塊指向的內存空間
char 8name;
用malloc(memory alloc)申請內存空間
name= (char *)malloc(10*sizeof(char));
使用realloc動態(tài)改變已經(jīng)分配內存的大小
name = (char *)realloc(name,20*sizeof(char));
使用完必須自己動手釋放內存
free(name);