国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

動(dòng)態(tài)內(nèi)存管理(下)

asoren / 3510人閱讀

摘要:函數(shù)和函數(shù)不同之處在于,函數(shù)會(huì)將所申請(qǐng)到的內(nèi)存空間全部初始化成,而函數(shù)則不會(huì),這就意味著比運(yùn)行時(shí)間更長(zhǎng),所以在選擇這兩個(gè)函數(shù)時(shí)可以根據(jù)是否需要初始化來(lái)選擇。切斷和已經(jīng)釋放的內(nèi)存空間的聯(lián)系。

目錄:動(dòng)態(tài)函數(shù)的介紹:malloc? free? calloc? realloc

? ? ? ? ?三、?calloc函數(shù)

? ? ? ??calloc函數(shù)介紹:

? ? ? ??calloc的使用例子:

四、?realloc函數(shù)

? ? ? ??realloc函數(shù)介紹:

? ? ? ??realloc函數(shù)的使用例子


動(dòng)態(tài)函數(shù)的介紹:malloc? free? calloc? realloc

三、calloc函數(shù)

函數(shù)的參數(shù)形式:? ?void* calloc(size_t num , size_t size )

??其中void*是一個(gè)可以接受任意類型的指針,size_t表示的是unsigned int(無(wú)符號(hào)整型)

num表示的是多少個(gè)元素,size表示的是一個(gè)元素的大小,單位是字節(jié)。

calloc函數(shù)介紹:

1.? calloc函數(shù)也是向內(nèi)存申請(qǐng)空間的,若是申請(qǐng)成功則會(huì)返回一個(gè)指向內(nèi)存首地址的指針,

若是申請(qǐng)失敗,則會(huì)返回一個(gè)NULL(空指針),所以使用該函數(shù)也是需要進(jìn)行判斷是否為

非空指針,否則程序會(huì)出錯(cuò)。

2.calloc函數(shù)和malloc函數(shù)不同之處在于,calloc函數(shù)會(huì)將所申請(qǐng)到的內(nèi)存空間全部

?初始化成0,而malloc函數(shù)則不會(huì),這就意味著calloc比malloc運(yùn)行時(shí)間更長(zhǎng),

所以在選擇這兩個(gè)函數(shù)時(shí)可以根據(jù)是否需要初始化來(lái)選擇。

calloc的使用例子:

#include#includeint main(){     int *ptr=(int*)calloc(10,sizeof(int));//用ptr指針來(lái)接受calloc返回的值,申請(qǐng)的空間是40字節(jié)      if(ptr==NULL)      {         return 0;//如果沒(méi)申請(qǐng)成功則直接結(jié)束函數(shù)。      }       else//為ptr非空的情況      {          for(int i=0;i<10;i++)            {                 int kc=*(prt+i)=i;//將所申請(qǐng)的空間賦值              printf("%d ",kc);//打印每個(gè)元素            }                 }            free(ptr);//釋放所申請(qǐng)的內(nèi)存空間,如不則容易導(dǎo)致內(nèi)存泄漏        ptr=NULL; //ptr還是指向原來(lái)所申請(qǐng)的地址,free不會(huì)將指針變?yōu)榭眨瑸榱税踩謩?dòng)變?yōu)镹ULL   return 0;}

四、realloc函數(shù)

?函數(shù)的參數(shù)形式void* realloc(void*ptr , size_t num);

?其中void*ptr是要被改變的指針指向的地址,size_t num是改變之后的大小,單位是字節(jié)

? realloc函數(shù)介紹:

? 1.realloc是一個(gè)專門用來(lái)調(diào)整申請(qǐng)動(dòng)態(tài)內(nèi)存的大小。(也是要和free函數(shù)配套使用)

? 2.若realloc要擴(kuò)大申請(qǐng)的空間,如果原始空間后有位置可追加則就在原指針之后進(jìn)行追加,

? ?如果不夠則另外找一塊新的空間來(lái),并且把存在舊的內(nèi)存里的數(shù)據(jù)移動(dòng)到新的內(nèi)存空間,

? ?并且釋放舊的內(nèi)存空間給操作系統(tǒng),返回一個(gè)指向新的內(nèi)存地址的指針。

? 3. realloc改變所申請(qǐng)空間的大小和上述函數(shù)類似,若申請(qǐng)失敗則返回一個(gè)空指針,所以

? ?? 要判斷所返回的值是否為非空,若為非空指針,則可以*ptr=*p。

? ?? (其中*ptr為舊的指針*p為新的指針)??

? ? ? 注:若是將空指針賦值給*ptr,則原始內(nèi)容地址將丟失(內(nèi)存泄漏)??

? ?4.realloc函數(shù)功能較強(qiáng)大還可以實(shí)現(xiàn)malloc函數(shù)的功能,如 void* realloc(NULL,size_t? size);

? ? ?? 就是只需對(duì)NULL進(jìn)行追加即可,它等價(jià)于void* malloc(size_t? size);

realloc函數(shù)的使用例子:

#include#includeint main(){   int* ptr=(int*)calloc(5,sizeof(int));//申請(qǐng)了5個(gè)int類型的內(nèi)存,用ptr去接受返回來(lái)的指針   if(ptr!=NULL)     { for(int i=0;i<5;i++)         {           int input= *(ptr+i)=i;           printf("%d ",input);         }     }       int*p=(int*)realloc(ptr,40);//原ptr申請(qǐng)為10個(gè)int類型     if(p==NULL)//這步判斷不可少       {          return 0;//若申請(qǐng)失敗則直接退出函數(shù)       }     else     {         ptr=p;//將新地址賦給舊的地址         for(int i=5;i<10;i++)              {                 int hi= *(ptr+i)=i;                 printf("%d ",hi);              }     }        free(ptr);//釋放申請(qǐng)的內(nèi)存給操作系統(tǒng),這步必不可少。        ptr=NULL;//切斷ptr和已經(jīng)釋放的內(nèi)存空間的聯(lián)系。    return 0;}

祝愿各位小伙伴們學(xué)有所成!?。?!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/119297.html

相關(guān)文章

  • C++內(nèi)存管理

    摘要:對(duì)于申請(qǐng)內(nèi)存失敗,的處理是返回空指針,而的處理是拋異常對(duì)于自定義類型,會(huì)調(diào)用其構(gòu)造析構(gòu)函數(shù),而不會(huì)。內(nèi)存泄漏并不是指內(nèi)存在物理上的消失,而是應(yīng)用程序分配某段內(nèi)存后,因?yàn)樵O(shè)計(jì)錯(cuò)誤,失去了對(duì)該段內(nèi)存的控制,因而造成了內(nèi)存的浪費(fèi)。 ...

    mudiyouyou 評(píng)論0 收藏0
  • 【C語(yǔ)言進(jìn)階】動(dòng)態(tài)內(nèi)存管理/分配

    摘要:棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集中,效率很高,但是分配的內(nèi)存容量有限。棧區(qū)主要存放運(yùn)行函數(shù)而分配的局部變量函數(shù)參數(shù)返回?cái)?shù)據(jù)返回地址等。 C語(yǔ)言動(dòng)態(tài)內(nèi)存分配篇 目錄 一、為什么存在動(dòng)態(tài)內(nèi)存管理/分配? ????????內(nèi)存的存儲(chǔ)形式劃分 二、動(dòng)態(tài)內(nèi)存函數(shù)的介紹 ????????malloc ...

    Carson 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<