Re: [cpp] 在一个函数内部动态创建一个类的对象,需要在此函数内释放它吗

胡 玮 zorro0799 at hotmail.com
Wed Jun 14 22:55:34 CST 2006


动态创建就是指堆中或着是自由内存区域中分配的内存,用new或malloc分配的内存,
你这里说是一个类对象应该是指用new在堆中创建的内存区域,可以在另一个函数中释
放,如

class object {
public:
   show()
   {
   }
}
void CreateObject(object **p)
{
   *p = new object;
}

void ReleaseObject(object *p)
{
  delete p;
}

int main()
{
  object *ptest;
  CreateObject(&ptest);
  ptest->show();
  RelaseObject(ptest);
}
但是要注意,分配内存的函数与释放内存的函数一定要一种c/c++的库,或着是说最好
在一个库中,也可以说是用一个库的new 或delete,因为不同库的处理方式不同,可能
会出现不可遇见的问题,不好意思,本人文笔差,基本就是这个意思,呵呵


>From: "xebec" <xebec at 21cn.com>
>Reply-To: C++ Discuss Group <cpp at codingnow.com>
>To: "C++ Discuss Group" <cpp at codingnow.com>
>Subject: Re: [cpp] 在一个函数内部动态创建一个类的对象,需要在此函数内释放它
吗
>Date: Wed, 14 Jun 2006 13:37:51 +0800
>
>
>
>ge link,您好!
>
>  你说的动态创建是指的是用&# 8220;new&# 8221;在堆上创建吧?如果是的话就需要自己显示使
用&# 8220;delete&# 8221;释放内存。如果是在栈上创建的话,则不需要。
>
>example:
>     // need delete
>     void foo(TypeA* tmp) {
>         tmp = new TypeA();
>         tmp->ooxx(); // do something...
>         delete tmp; // need delete
>     }
>
>     void bar() {
>         TypeA tmp;
>         tmp.ooxx(); // do something
>         // doesn't need delete
>     }
>
>======== 16:50:58 您在来信中写道: ========
>
>我在一个函数内动态创建一个临时对象, 需要手动写delete, 还是程序会自动释放的
?
>
>
>= = = = = = = = = = = = = = = = = = = = = =
>        致
>礼!
>              xebec
>                             xebec at 21cn.com
>                 2006-06-14


>_______________________________________________
>Cpp mailing list
>Cpp at codingnow.com
>http://codingnow.com/mailman/listinfo/cpp

_________________________________________________________________
享用世界上最大的电子邮件系统&# 8213; MSN Hotmail。  http://www.hotmail.com  



More information about the Cpp mailing list