Sign-up....

delete?

void main()

{

int si=new int();

call subFunction();

delete si;

}

subFunction()

{

int s=new int();

//some operator

delete s;

}

我问一下:这个子程序subFunction里面有没有必要使用delete?我觉得子程序被执行后自动会deallocate memory,没有必要使用delete,是这样吗?

[220 byte] By [msdn] at [2007-8-14 12:57:49]
# 1 Re: delete?

必须自己delete的

oo at 2004-10-5 15:59:09 >
# 2 Re: delete?

不过你的程序有问题的

int si=new int();

应该是 int *si=new int();

或int si;

oo at 2004-10-5 16:00:11 >
# 3 Re: delete?

能编辑过吗?

new申请的内存,最好通过delete释放。否则由内存泄漏。

自动释放的内存指的是栈里的对象。new申请的内存在堆中。必须释放。

Eagle_118 at 2004-10-5 16:16:51 >
# 4 Re: delete?

还是有点弄不明白,哪位大哥知道哪里对这点解释的很好,推荐一下,谢谢。

BestSky at 2004-10-5 16:41:45 >
# 5 Re: delete?

oo(为了名副其实,努力学习oo技术ing) ( )

解释的正确!!!!

yyj1982 at 2004-10-5 16:44:00 >
# 6 Re: delete?

对,那个程序是有问题的,我试了一下,数组delete会warning,不知道会不会造成不好的后果,vector不可delete,难道自己管理自己?

BestSky at 2004-10-5 17:11:54 >
# 7 Re: delete?

数组要用delete[]

另外,vector什么时候不能delete了

TC++PL上特别提到vector要用delete而不用delete[]

fregen at 2004-10-5 17:39:14 >
# 8 Re: delete?

这样说吧,一个 new 就一定会对应着一个 delete

一个 new xxxx[] 就一定对应着一个 delete[]

而对应的位置,通常是

同一个子程序中的作为局部变量的 new 和 delete

两个相辅的子程序中分别使用new和delete,如 createXXX 和 releaseXXX 两个成地子程序

构造函数和板构函数

jamesfancy at 2004-10-5 18:04:28 >
# 9 Re: delete?

在 .net unmanaged code 必须

delete &vectorInstance

另外

delete array会有warning,因为delete要对pointer,不过不会出错。

BestSky at 2004-10-5 22:27:39 >

C/C++

All Classified