一、動(dòng)態(tài)分配內(nèi)存說(shuō)明
動(dòng)態(tài)分配內(nèi)存
為什么需要?jiǎng)討B(tài)分配內(nèi)存:
1.存儲(chǔ)的數(shù)據(jù) 需要延長(zhǎng)生命周期
2.一個(gè)指針變量需要存儲(chǔ)數(shù)據(jù),變量本身只能存地址蝶押,不能存數(shù)據(jù),需要分配內(nèi)存空間來(lái)存儲(chǔ)數(shù)據(jù)火欧。
二棋电、基本的使用辦法
如果使用指針變量接收數(shù)據(jù)
必須先為這個(gè)指針變量分配一片指向的內(nèi)存空間
有內(nèi)存空間 才能存數(shù)據(jù)
導(dǎo)入頭文件stdlib.h
使用malloc(memory alloc)申請(qǐng)內(nèi)存空間
三、具體代碼實(shí)現(xiàn)
#include <stdio.h>
#include <stdlib.h>
int main(){
char *name ;
name = (char *)malloc(10*sizeof(char));
if(name == NULL){
// 申請(qǐng)內(nèi)存失敗
exit(EXIT_FAILURE);
}
scanf("%s", name);
printf("%s\n",name);
//使用realloc動(dòng)態(tài)改變已經(jīng)分配內(nèi)存的大小
//增加或者減少
name = (char *)realloc(name, 20*sizeof(char));
if(name == NULL){
//退出之前必須將之前分配的內(nèi)存釋放掉
free(name);
exit(EXIT_FAILURE);
}
//使用完畢必須自己手動(dòng)釋放內(nèi)存
free(name);
return 0;
}