国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++ 中malloc()和free()函數的理解

2020-01-26 13:58:47
字體:
來源:轉載
供稿:網友

C++ 中malloc()和free()函數的理解

   關于malloc和free這兩個函數,malloc的用法示例:int *p=(int *)malloc(2*sizeof(int)); 它表示在堆中開辟一塊大小為2*sizeof(int)的一塊內存空間,p指向這塊內存空間的起始地址,malloc前面的(int*)表示這塊空間用來存儲int型數組。開辟了這塊空間后,可以修改這個空間中的值,例如為*p,*(p+1)做賦值操作,如果再次使用malloc函數,例如再寫一個 int *q=(int *)malloc(2*sizeof(int)); 此時開辟的以q為起始地址長度為2*sizeof(int)的空間是不會覆蓋p所指向的空間的。但是,如果在int *q=(int *)malloc(2*sizeof(int));之前寫一個free(p),那么,q所指向的空間則有可能覆蓋p指向的空間。所謂的free(p)操作,其實是修改p所指向的空間的標記值,讓其可以被覆蓋。盡管執行了free(p),p仍就指向以前的起始地址,依舊可以對*p,*(p+1)賦值,并且可訪問他們(例如輸出)。

代碼如下:

int main(){   int *p=(int *)malloc(2*sizeof(int));   free(p);   *p=1;   *(p+1)=2;   cout<<p<<endl<<(p+1);   cout<<endl;   cout<<*p<<endl<<*(p+1);    int *q=(int *)malloc(2*sizeof(int));   cout<<endl<<q<<endl<<(q+1);   cout<<endl<<*q<<endl<<*(q+1);   return 1; } 

運行結果:

補充:

int *p=(int *)malloc(2*sizeof(int)); 若要釋放這段空間,必須free(p),只是單單想釋放部分空間,例如free(p+1)是不允許的。

以上就是C++ 中malloc()和free()函數的實例詳解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 远安县| 三明市| 东辽县| 湖北省| 门头沟区| 都安| 阳原县| 天等县| 滨州市| 阿拉尔市| 英山县| 南郑县| 乌审旗| 偃师市| 大邑县| 玛多县| 玉门市| 凤冈县| 林州市| 阿尔山市| 荃湾区| 株洲市| 忻城县| 偏关县| 武胜县| 贵德县| 宁海县| 嘉禾县| 宜州市| 化隆| 长海县| 夏邑县| 江安县| 长乐市| 和龙市| 曲沃县| 临武县| 嘉鱼县| 华容县| 四川省| 芦山县|