Java中對(duì)象與C++中對(duì)象的放置安排的對(duì)比
Java中對(duì)象與C++中對(duì)象的放置安排的對(duì)比
概要:
Java中,所有的對(duì)象都存放在堆(Heap,一種通用的內(nèi)存池)中;而對(duì)象的引用是存放在堆棧(Stack)中的。
我們可以通過(guò)String直接聲明的字符串與new String聲明出來(lái)的字符串使用equals()和"=="進(jìn)行的比較,從而理解對(duì)象和引用的關(guān)系及它們的存儲(chǔ)位置。
堆棧是一種快速有效的分配存儲(chǔ)方法,僅次于寄存器。創(chuàng)建程序時(shí),Java系統(tǒng)必須知道存儲(chǔ)在堆棧內(nèi)所有項(xiàng)的確切生命周期,以便上下移動(dòng)堆棧指針。
堆不同于堆棧的好處是:編譯器不需要知道存儲(chǔ)的數(shù)據(jù)在堆里存活多長(zhǎng)時(shí)間。所以,堆比堆棧更加靈活。
Java中的堆棧并不能簡(jiǎn)單理解為數(shù)據(jù)結(jié)構(gòu)中的棧,雖然它們的英文都是Stack。Java中的堆棧是位于通用RAM(隨機(jī)訪問(wèn)存儲(chǔ)器)中,但通過(guò)堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動(dòng),則分配新的內(nèi)存;若向上移動(dòng),則釋放那些內(nèi)存。
具體的Java的內(nèi)存分配請(qǐng)?jiān)斠姟禩hinking in Java》P22頁(yè)。
C++中:只要使用了new和malloc關(guān)鍵字聲明的對(duì)象,都是存放在堆中的,而malloc關(guān)鍵字也是對(duì)堆內(nèi)存進(jìn)行操作的:
A a(1);//棧中分配 A b = A(1);//棧中分配 A *c = new A(1);//堆中分配內(nèi)存空間,將在堆中所創(chuàng)建的對(duì)象存儲(chǔ)地址賦值給c指針 A *d = (A*)malloc(sizeof(A));//堆中分配內(nèi)存空間 delete c;
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
java集合Collection實(shí)現(xiàn)類解析ArrayList?LinkedList及Vector
這篇文章主要為大家介紹了java集合Collection實(shí)現(xiàn)類解析ArrayList?LinkedList及Vector,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
Java數(shù)據(jù)庫(kù)連接池技術(shù)的入門教程
這篇文章主要給大家介紹了關(guān)于Java數(shù)據(jù)庫(kù)連接池技術(shù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Java替換視頻背景音樂(lè)的實(shí)現(xiàn)示例
FFmpeg 是一個(gè)強(qiáng)大的開源多媒體處理工具,被廣泛應(yīng)用于音視頻的錄制、轉(zhuǎn)碼、編輯等方面,本文主要介紹了Java替換視頻背景音樂(lè),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
java中的session對(duì)象及其常用方法小結(jié)
這篇文章主要介紹了java中的session對(duì)象及其常用方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
mybatis動(dòng)態(tài)SQL?if的test寫法及規(guī)則詳解
這篇文章主要介紹了mybatis動(dòng)態(tài)SQL?if的test寫法及規(guī)則詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
Java中實(shí)現(xiàn)文件預(yù)覽的功能(實(shí)例代碼)
大家都知道word,Excel,PPT實(shí)現(xiàn)在線預(yù)覽常用的方式就是先轉(zhuǎn)換成pdf,然后在進(jìn)行預(yù)覽,下面給大家介紹Java中如何實(shí)現(xiàn)文件預(yù)覽的功能,需要的朋友可以參考下2023-05-05

