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