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