這篇文章主要介紹了Java中物件與C++中物件的放置安排的對比的相關資料,希望透過本文能幫助到大家,需要的朋友可以參考下
Java中物件與C++中物件的放置安排的對比
概要:
Java中,所有的物件都存放在堆(Heap,一種通用的記憶體池)中;而物件的參考是存放在堆疊(Stack)中的。
我們可以透過String直接宣告的字串與new String宣告出來的字串使用equals()和"=="進行的比較,從而理解物件和引用的關係及它們的儲存位置。
堆疊是一種快速有效的分配儲存方法,僅次於暫存器。在建立程式時,Java系統必須知道儲存在堆疊內所有項目的確切生命週期,以便上下移動堆疊指標。
堆疊不同於堆疊的好處是:編譯器不需要知道儲存的資料在堆裡存活多久。所以,堆比堆疊更加靈活。
Java中的堆疊並不能簡單理解為資料結構中的棧,雖然它們的英文都是Stack。 Java中的堆疊是位於通用RAM(隨機存取記憶體)中,但透過堆疊指標可以從處理器那裡獲得直接支援。堆疊指標若向下移動,則分配新的記憶體;若向上移動,則釋放那些記憶體。
具體的Java的記憶體分配請詳見《Thinking in Java》P22頁。
C++中:只要使用了new和malloc關鍵字聲明的對象,都是存放在堆中的,而malloc關鍵字也是對堆記憶體進行操作的:
A a(1);//栈中分配 A b = A(1);//栈中分配 A *c = new A(1);//堆中分配内存空间,将在堆中所创建的对象存储地址赋值给c指针 A *d = (A*)malloc(sizeof(A));//堆中分配内存空间 delete c;
以上是Java與C++兩者中的物件放置安排的對比的詳細內容。更多資訊請關注PHP中文網其他相關文章!