c++中堆棧及創(chuàng)建對(duì)象示例代碼
簡(jiǎn)介
棧(stack),先進(jìn)后出,位于一級(jí)緩存中,操作系統(tǒng)自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等,被調(diào)用時(shí)處于存儲(chǔ)空間中,調(diào)用完畢立即釋放。
堆(heap),堆包含一個(gè)鏈表來(lái)維護(hù)已用和空閑的不連續(xù)的內(nèi)存塊,存放在二級(jí)緩存中,一般由程序員分配釋放。
快速記憶方式:
一級(jí)緩存比二級(jí)緩存快,棧是一個(gè)先進(jìn)后出列表,存取非常快,所以棧是在一級(jí)緩存中。
棧中不能隨機(jī)取數(shù)據(jù),只能取最上面的一個(gè),存放的內(nèi)容必然要有嚴(yán)格的存取順序,所以適合函數(shù)調(diào)用時(shí)的形參、局部變量。
??臻g有限,一般PC一級(jí)緩存就幾M,所以其中的數(shù)據(jù)也是快速使用,快速刪除。像形參、局部變量,在函數(shù)調(diào)用結(jié)束系統(tǒng)就會(huì)把數(shù)據(jù)主動(dòng)銷毀了。
堆空間大,由程序員維護(hù),系統(tǒng)不會(huì)主動(dòng)銷毀。
示例代碼如下:
#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<<"對(duì)象 "<<this->ID<<" 執(zhí)行析構(gòu)函數(shù)"<<std::endl; } void Test() { TestNew test(1);//創(chuàng)建對(duì)象1,不使用new,存儲(chǔ)在棧中 TestNew *pTest = new TestNew(2);//創(chuàng)建對(duì)象2,使用new,存儲(chǔ)在堆中 //delete pTest; } int main() { Test();//這個(gè)地方有點(diǎn)問(wèn)題,pTest沒(méi)有進(jìn)行處理,會(huì)導(dǎo)致內(nèi)存泄露,實(shí)際應(yīng)用中要注意呀 }
輸出結(jié)果:
對(duì)象 1 執(zhí)行析構(gòu)函數(shù)
說(shuō)明函數(shù)調(diào)用結(jié)束,對(duì)象1被系統(tǒng)主動(dòng)銷毀了。
如果把Test()方法中,delete前的注釋去掉。
輸出:
對(duì)象 2 執(zhí)行析構(gòu)函數(shù)
對(duì)象 1 執(zhí)行析構(gòu)函數(shù)
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
64位linux 編譯c提示gnu/stubs-32.h:No such file or directory的解決方法
這篇文章主要介紹了64位linux 編譯c提示gnu/stubs-32.h:No such file or directory的解決方法,需要的朋友可以參考下2020-03-03C++超詳細(xì)講解RTTI和cast運(yùn)算符的使用
RTTI(Runtime Type Identification)是“運(yùn)行時(shí)類型識(shí)別”的意思。C++引入這個(gè)機(jī)制是為了讓程序在運(yùn)行時(shí)能根據(jù)基類的指針或引用來(lái)獲得該指針或引用所指的對(duì)象的實(shí)際類型,cast強(qiáng)制轉(zhuǎn)換運(yùn)算符是一種特殊的運(yùn)算符,它把一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型2022-08-08C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳解(附源碼)
大家好,本篇文章主要講的是C語(yǔ)言實(shí)現(xiàn)掃雷游戲詳解(附源碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01C語(yǔ)言中函數(shù)參數(shù)的入棧順序詳解及實(shí)例
這篇文章主要介紹了C語(yǔ)言中函數(shù)參數(shù)的入棧順序詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-02-02C語(yǔ)言實(shí)現(xiàn)個(gè)人財(cái)務(wù)管理軟件
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)個(gè)人財(cái)務(wù)管理軟件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05