我试图理解堆和栈内存之间的区别,这个问题在SO上以及这个解释都很好地解释了基础知识。
然而,在第二个解释中,我遇到了一个例子,其中有一个具体问题,该例子如下:
解释说对象
然而,对象
然而,在第二个解释中,我遇到了一个例子,其中有一个具体问题,该例子如下:
![heap allocation example](https://istack.dev59.com/FzluQ.webp)
m
是在堆上分配的,我只是想知道这是否就是全部。根据我的理解,对象本身确实是在堆上分配的,因为使用了new
关键字进行其实例化。然而,对象
m
的指针同时也在栈上分配,否则,位于堆中的对象本身将无法访问。我觉得出于完整性的考虑,在这个教程中应该提到这一点,忽略这一点会让我有些困惑,所以我希望有人能澄清这一点并告诉我,我的理解是正确的,即这个例子应该基本上有两个语句,分别是:
1.对象m
的指针已经在栈中分配了
2.对象m
本身(因此它所携带的数据以及访问其方法)已经在堆中分配了