MyClass* po = new MyClass();
po->DoSomething();
和
MyClass po;
MyClass* pp = &po;
pp->DoSomething();
你能解释一下吗,包括堆栈和堆中会发生什么。
最佳答案
第一种情况是使用堆中的动态内存分配创建类型为 MyClass 的实例。当你离开作用域时,指向po的对象仍然存在于堆中,如果不考虑就会留下内存泄漏。
第二个是在堆栈上实例化 MyClass 的实例。然后创建一个指向堆栈上对象的类型 MyClass 的指针。当你离开作用域时,po 将被破坏,pp 指向的对象将失效。
关于c++ - c++中以下两种方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27466812/