2012-04-21 84 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