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

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

c++中堆棧及創建對象示例代碼

2020-05-23 13:58:38
字體:
來源:轉載
供稿:網友

簡介

棧(stack),先進后出,位于一級緩存中,操作系統自動分配釋放 ,存放函數的參數值,局部變量的值等,被調用時處于存儲空間中,調用完畢立即釋放。

堆(heap),堆包含一個鏈表來維護已用和空閑的不連續的內存塊,存放在二級緩存中,一般由程序員分配釋放。

快速記憶方式:

一級緩存比二級緩存快,棧是一個先進后出列表,存取非常快,所以棧是在一級緩存中。

棧中不能隨機取數據,只能取最上面的一個,存放的內容必然要有嚴格的存取順序,所以適合函數調用時的形參、局部變量。

棧空間有限,一般PC一級緩存就幾M,所以其中的數據也是快速使用,快速刪除。像形參、局部變量,在函數調用結束系統就會把數據主動銷毀了。

堆空間大,由程序員維護,系統不會主動銷毀。

示例代碼如下:

#include <iostream>using namespace std;class TestNew{private:  int ID;public:  TestNew(int ID);  ~TestNew();};TestNew::TestNew(int ID){  this->ID = ID;}TestNew::~TestNew(){  std::cout<<"對象 "<<this->ID<<" 執行析構函數"<<std::endl;}void Test(){  TestNew test(1);//創建對象1,不使用new,存儲在棧中  TestNew *pTest = new TestNew(2);//創建對象2,使用new,存儲在堆中  //delete pTest;}int main(){  Test();//這個地方有點問題,pTest沒有進行處理,會導致內存泄露,實際應用中要注意呀}

輸出結果:

對象 1 執行析構函數

說明函數調用結束,對象1被系統主動銷毀了。

如果把Test()方法中,delete前的注釋去掉。

輸出:

對象 2 執行析構函數

對象 1 執行析構函數

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑河市| 珠海市| 平定县| 山阳县| 田东县| 秦安县| 嘉定区| 宝丰县| 霍州市| 和硕县| 海南省| 临漳县| 安宁市| 鸡泽县| 延长县| 石家庄市| 荆门市| 临江市| 郴州市| 泰宁县| 邳州市| 康平县| 喀喇沁旗| 游戏| 永吉县| 新邵县| 西丰县| 光山县| 阿合奇县| 南宁市| 德保县| 织金县| 包头市| 新余市| 合山市| 灵武市| 都匀市| 株洲县| 沁源县| 桐乡市| 陇川县|