下面代码有new,但没有delete,可以么?是不是应该在最后加上一个delete [] dp;呢?否则会不会内存泄露呢
intmain(){Date*dp=newDate;dp->set(2000,12,6);if(dp->isLeapYear())(*dp).print();}在编译并执...
int main(){
Date* dp=new Date;
dp->set(2000,12,6);
if(dp->isLeapYear())
(*dp).print();
}
在编译并执行程序时,没有加delete dp;也成功了。 展开
Date* dp=new Date;
dp->set(2000,12,6);
if(dp->isLeapYear())
(*dp).print();
}
在编译并执行程序时,没有加delete dp;也成功了。 展开
4个回答
展开全部
程序退栈时会自动释放所有的空间,
Date* dp=new Date; 指明是申请一个变量
只需用delete dp;
不用delete [] dp
Date* dp=new Date; 指明是申请一个变量
只需用delete dp;
不用delete [] dp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new和delete应配对,否则会内存泄露
你这里用delete dp
delete [] dp是用来释放数组的空间的,比如如果你用了dp = new Date[10],就用delete [] dp
你这里用delete dp
delete [] dp是用来释放数组的空间的,比如如果你用了dp = new Date[10],就用delete [] dp
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
加delete是一个良好的习惯
内存泄漏主要是担心访问到不该访问的地方
一般指针使用完后,都要设置成NULL
还有,你这应该是直接delete dp;不是数组
最后应该加个return 0;
内存泄漏主要是担心访问到不该访问的地方
一般指针使用完后,都要设置成NULL
还有,你这应该是直接delete dp;不是数组
最后应该加个return 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询