+ -
当前位置:首页 → 问答吧 → object obj 和 object *obj = new object() 有什么区别

object obj 和 object *obj = new object() 有什么区别

时间:2010-08-14

来源:互联网

本帖最后由 evaspring 于 2010-08-14 15:42 编辑

class object {
public:
    object(){}
   ~object(){}
};

我只知道 object obj ; 这样声明的变量在函数执行完了后会自动执行 析构函数 ,而new object() 要 delete 才行。

那我不可以尽量在函数里面都像第一种方式声明变量,这样不就可以避免内存泄漏了?

作者: evaspring   发布时间: 2010-08-14

如果你想obj在退出函数后还能用,就不能这么玩了

作者: lllaaa   发布时间: 2010-08-14

C++不懂,不过猜测,第一种声明后会分配Object需要的空间,第二种声明只是分配了一个指针的空间而已。

在函数中做第一种声明,退出以后空间就被回收。住外传引用就是dangle pointer。

作者: tempname2   发布时间: 2010-08-14