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,是这样吗?
void main()
{
int si=new int();
call subFunction();
delete si;
}
subFunction()
{
int s=new int();
//some operator
delete s;
}
我问一下:这个子程序subFunction里面有没有必要使用delete?我觉得子程序被执行后自动会deallocate memory,没有必要使用delete,是这样吗?
必须自己delete的
不过你的程序有问题的
int si=new int();
应该是 int *si=new int();
或int si;
能编辑过吗?
new申请的内存,最好通过delete释放。否则由内存泄漏。
自动释放的内存指的是栈里的对象。new申请的内存在堆中。必须释放。
还是有点弄不明白,哪位大哥知道哪里对这点解释的很好,推荐一下,谢谢。
oo(为了名副其实,努力学习oo技术ing) ( )
解释的正确!!!!
对,那个程序是有问题的,我试了一下,数组delete会warning,不知道会不会造成不好的后果,vector不可delete,难道自己管理自己?
数组要用delete[]
另外,vector什么时候不能delete了
TC++PL上特别提到vector要用delete而不用delete[]
这样说吧,一个 new 就一定会对应着一个 delete
一个 new xxxx[] 就一定对应着一个 delete[]
而对应的位置,通常是
同一个子程序中的作为局部变量的 new 和 delete
两个相辅的子程序中分别使用new和delete,如 createXXX 和 releaseXXX 两个成地子程序
构造函数和板构函数
在 .net unmanaged code 必须
delete &vectorInstance
另外
delete array会有warning,因为delete要对pointer,不过不会出错。