【发布时间】:2016-02-03 13:07:26
【问题描述】:
我不明白在这种情况下内存中发生了什么:
int main(int argc, char** argv) {
Ninja n; //create a object on the stack?
Ninja * n = new Ninja; //create a pointer the the object on the heap?
return 0;
}
有什么区别?
【问题讨论】:
-
是的,堆栈中的第一个,堆中的第二个
-
将事先已知的变量和对象放入栈中。在执行过程中动态创建的变量和对象放在堆上。
-
所以这实际上是运行时(在执行期间在堆上创建一个对象)和编译时在行动?