Java中的對象與C++中的對象有什么區(qū)別?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
Java中對象與C++中對象的放置安排的對比
概要:
Java中,所有的對象都存放在堆(Heap,一種通用的內(nèi)存池)中;而對象的引用是存放在堆棧(Stack)中的。
我們可以通過String直接聲明的字符串與new String聲明出來的字符串使用equals()和"=="進行的比較,從而理解對象和引用的關(guān)系及它們的存儲位置。
堆棧是一種快速有效的分配存儲方法,僅次于寄存器。創(chuàng)建程序時,Java系統(tǒng)必須知道存儲在堆棧內(nèi)所有項的確切生命周期,以便上下移動堆棧指針。
堆不同于堆棧的好處是:編譯器不需要知道存儲的數(shù)據(jù)在堆里存活多長時間。所以,堆比堆棧更加靈活。
Java中的堆棧并不能簡單理解為數(shù)據(jù)結(jié)構(gòu)中的棧,雖然它們的英文都是Stack。Java中的堆棧是位于通用RAM(隨機訪問存儲器)中,但通過堆棧指針可以從處理器那里獲得直接支持。堆棧指針若向下移動,則分配新的內(nèi)存;若向上移動,則釋放那些內(nèi)存。
具體的Java的內(nèi)存分配請詳見《Thinking in Java》P22頁。
C++中:只要使用了new和malloc關(guān)鍵字聲明的對象,都是存放在堆中的,而malloc關(guān)鍵字也是對堆內(nèi)存進行操作的:
A a(1);//棧中分配 A b = A(1);//棧中分配 A *c = new A(1);//堆中分配內(nèi)存空間,將在堆中所創(chuàng)建的對象存儲地址賦值給c指針 A *d = (A*)malloc(sizeof(A));//堆中分配內(nèi)存空間 delete c;
當(dāng)前題目:Java中的對象與C++中的對象有什么區(qū)別-創(chuàng)新互聯(lián)
文章地址:http://www.rwnh.cn/article2/jogoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、營銷型網(wǎng)站建設(shè)、Google、網(wǎng)站排名、定制開發(fā)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容