类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
int main()
{
int dd = 5;
int *p = ⅆ
delete p;
return 0;
}
这样对吗? 不是用New生成,也需要用Delete来删除吗?还有就是在C++中,是不是所有的变量都必须删除啊?
网友回答:
绝对不行,dd是局部变量,在栈里,函数执行完毕会自动释放,new出来的对象在堆里,需要delete。
这样可以样,用new分配的内存空间位于堆中,必须用delete删除,而其他的一般是存在于栈中,程序结束时系统自动删除。。
应该是,new是分配内存空间,若不释放,就一直占用内存,造成坏死区bad block,
new跟delete是成对出现的.
new的东西必须用delete删除, 只能delete掉new出来的东西.
这样不可以delete的,只有new的才可以delete
如果你这样的话,编译不会有问题,但是一运行,就会出错的。
int main()
{
int dd = 5;
int *p = ⅆ
delete p;
return 0;
}
晕,你这个程序根本就不用DELETE,return 0以后内存就完全释放了,windows下的程序宽松度很大,只要不是服务程序,一般不是放内存没什么太大问题,而乱是放内存会死的很难看
堆和栈是不同的,栈的指针不能用释放堆内存的方式释放。