c – 这两种对象实例化方法有什么区别?

假设我有一个名为A的类:
Class A
{
...
}

以下两种实现对象的方法间的区别是什么:

void main(void)
{
    A a;  // 1
    A *pa=new A();  // 2
}

正如我目前的理解(尚未确定):

>方法1在main()方法的堆栈帧上分配对象a,因此该对象不能删除,因为删除没有意义(不知道为什么,有人可以解释一下吗?).
>方法2在进程的堆上分配对象a,并在main()方法的堆栈帧上分配A * vairable pa,因此可以删除对象,并且可以在删除后将pa指定为null.

我对吗?如果我的理解是正确的,有人可以告诉我为什么我不能在方法1中从堆栈中删除一个对象?

非常感谢…

解决方法

对象a具有自动存储持续时间,因此它将在定义它的范围的末尾自动删除.尝试手动删除它没有意义.只有具有动态存储持续时间的对象(例如已使用new分配的* pa)才需要手动删除.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...