屬于內(nèi)存管理的兩個(gè)函數(shù),malloc是申請(qǐng)內(nèi)存的,free是釋放內(nèi)存的。
創(chuàng)新互聯(lián)建站專注于隆子網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供隆子營銷型網(wǎng)站建設(shè),隆子網(wǎng)站制作、隆子網(wǎng)頁設(shè)計(jì)、隆子網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造隆子網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供隆子網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1、malloc一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
也可以在sizeof前面加上一個(gè)'n*'這就成了一個(gè)動(dòng)態(tài)分配數(shù)組的方法。
2、free一般用法:
int *t=NULL;
t=(int *)malloc(sizeof(int));
free(t);
這樣t所指的空間就被釋放掉了。
擴(kuò)展資料:
malloc函數(shù)定義
其函數(shù)原型為void *malloc(unsigned int size);其作用是在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一個(gè)長度為size的連續(xù)空間。此函數(shù)的返回值是分配區(qū)域的起始地址,或者說,此函數(shù)是一個(gè)指針型函數(shù),返回的指針指向該分配域的開頭位置。
如果分配成功則返回指向被分配內(nèi)存的指針(此存儲(chǔ)區(qū)中的初始值不確定),否則返回空指針NULL。當(dāng)內(nèi)存不再使用時(shí),應(yīng)使用free()函數(shù)將內(nèi)存塊釋放。
參考資料來源:百度百科-malloc函數(shù)
參考資料來源:百度百科-free()
都是通過系統(tǒng)API函數(shù)向系統(tǒng)申請(qǐng)的
#include stdio.h
#include malloc.h
void main()
{int a=10;
int p*;//定義了一個(gè)整數(shù)類型的指針
p=malloc(sizeof(int)*a);//分配40個(gè)字節(jié)的內(nèi)存空間
*p=5;
*(p+1)=6; //將分配的內(nèi)存空間的前兩個(gè)整數(shù)賦值為5和6
free(p); //使用完之后釋放內(nèi)存空間
}
但在某些時(shí)候,我們需要的數(shù)組的長度是無法預(yù)先確定的,要解決這樣的限制,需要使用動(dòng)態(tài)數(shù)組。動(dòng)態(tài)數(shù)組是相對(duì)于靜態(tài)數(shù)組而言。動(dòng)態(tài)數(shù)組的內(nèi)存空間是從堆(heap)上分配的,是在執(zhí)行代碼過程中分配的,當(dāng)程序執(zhí)行到這些語句時(shí),才為其分配。注意,程序員自己負(fù)責(zé)釋放內(nèi)存。
1
2
#includestdio.h
#includestdlib.h
int main(int arcv, char * argv[])
{
int arrLen;
char *array;
char c;
int i;
printf("please set the size of the len:\n");
scanf("%d", arrLen);
array = (char *)malloc(arrLen*sizeof(char));
if(array == NULL)
{
printf("malloc fail\n");
return -1;
}
for(i = 0; i arrLen;i++)
{
c = getchar();
array[i] =c;//*array++ =c;
}
for( i = 0; i arrLen; i++)
{
printf("this array is %c\n", array[i]);
}
free(array);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mallco和free成對(duì)出現(xiàn),在用完申請(qǐng)的內(nèi)存之后及時(shí)釋放,否則會(huì)造成內(nèi)存泄漏。
我們?cè)谝恍╉?xiàng)目中經(jīng)常出現(xiàn)內(nèi)存泄漏
malloc(sizeof)是C語言,是向系統(tǒng)申請(qǐng)內(nèi)存空間的函數(shù)。
sizeof一般用于獲取字符串的長度,是處理字符串的重要工具。
同時(shí),sizeof在數(shù)據(jù)結(jié)構(gòu)這門課中是創(chuàng)建結(jié)點(diǎn)必要的命令。
例:*head=(node*)malloc(sizeof(node)); [注]node為結(jié)構(gòu)體。
sizeof(node)表示獲取node類型的長度,malloc(sizeof(node))表示在內(nèi)存中申請(qǐng)一個(gè)node長度的空間。
關(guān)于C語言:
C語言是一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器。
C語言是僅產(chǎn)生少量的機(jī)器語言以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的高效率程序設(shè)計(jì)語言。盡管C語言提供了許多低級(jí)處理的功能,但仍然保持著跨平臺(tái)的特性,以一個(gè)標(biāo)準(zhǔn)規(guī)格寫出的C語言程序可在包括類似嵌入式處理器以及超級(jí)計(jì)算機(jī)等作業(yè)平臺(tái)的許多計(jì)算機(jī)平臺(tái)上進(jìn)行編譯。
分享標(biāo)題:c語言申請(qǐng)內(nèi)存詳細(xì)函數(shù) c語言內(nèi)存管理函數(shù)
網(wǎng)站網(wǎng)址:http://vcdvsql.cn/article38/ddigssp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、微信公眾號(hào)、App設(shè)計(jì)、定制網(wǎng)站、App開發(fā)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)