2012-04-21 86 views
-1

在C++中,如果我通過堆創建對象,這意味着它是在運行時創建的。 如果我創建的對象不使用新的關鍵字,它是在編譯時創建的。C++分配對象?

是否可以,如果我聽到堆這個詞它意味着運行時?

第二問題

在Java

如果對一個對象的引用指的是一個不同的對象則首先參照將獲得通過垃圾收集器自動銷燬對象,因爲沒有一個是指它。 是同樣的事情發生在c + +中,如果你沿堆創建一個對象,然後指向它,然後分配一個指向該對象的指針。 如果該指針指向一個不同的對象堆中的對象會發生什麼,這個對象會自動執行析構函數而銷燬?

+1

不是,不。該應用程序無法在編譯時創建對象,因爲它沒有運行(甚至不存在)。 C++,如果你覆蓋最後一個/唯一poiinter到一個對象,該對象泄漏,而不是銷燬。 – 2012-04-21 21:14:39

回答

1

本地對象堆在運行時創建的,並且不涉及使用與新創建的新

對象不被破壞,直到有人呼籲它們刪除

靜態對象是在程序啓動時創建。

+0

什麼是靜態內存分配?那是編譯時間?所以你不能在編譯時創建一個對象? – user1293258 2012-04-21 21:21:43

+0

「編譯」一詞的意思是將程序翻譯成機器語言_。它與內存分配或創建對象無關。這類似於拿一本教科書並將內容翻譯成一門外語。 – 2012-04-22 00:35:53