国产探花免费观看_亚洲丰满少妇自慰呻吟_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()函數的實例詳解,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 合肥市| 吴堡县| 尼玛县| 天津市| 九龙坡区| 沈丘县| 巴彦淖尔市| 兴和县| 通海县| 礼泉县| 雅安市| 靖边县| 蓝田县| 巧家县| 玉林市| 丽江市| 克什克腾旗| 开原市| 桑日县| 南乐县| 通海县| 永登县| 修文县| 临江市| 辽阳市| 五莲县| 潮州市| 顺义区| 伊通| 保定市| 孟连| 曲靖市| 无为县| 德安县| 长治市| 资源县| 略阳县| 谢通门县| 大同县| 奉化市| 寿光市|