另外,你能定义一个类,使你可以在堆上创建它的对象但不在堆栈上吗?
答案 0 :(得分:0)
据我所知,堆栈中只存在Primitive类型,而堆上创建复杂类型(对象),并由堆栈上的原始指针引用。此外,堆栈值一旦超出范围就会被删除,而堆上分配的对象会持续超出其原始范围,并最终被垃圾收集。
就我的思维方式而言,根本不会在堆栈上创建对象。在堆栈上创建指向堆上分配的对象的指针。因此,除非我遗漏一些关键的东西(总是有可能!),否则第二个问题的答案就是无论你做什么,你的类及其所有内部对象都将在堆上创建。堆栈上存在的所有内容都是指向堆上对象位置的引用指针。
答案 1 :(得分:0)
■实例变量和对象存在于堆上。
■局部变量存在于堆栈中。