返回信息流请大牛们帮忙解答为什么下列程序能够正常输出结果:3
#include <iostream>
using namespace std;
int main()
{
int n=3,*p=&n;
for(int i=0;i<1000;i++)
delete p;
cout<<*p<<endl;
system("pause");
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / cpp / #16292同步于 2008/11/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
有关delete的问题
as1302001954
2008/11/19镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
不过我要澄明一点,如果用malloc申请一个指向一个对象的内存,用free则直接释放内存,不会调用析构函数;如果用delete则先调用析构函数然后再释放内存
malloc能“申请一个指向一个对象的内存”么
【 在 as1302001954 的大作中提到: 】
: 不过我要澄明一点,如果用malloc申请一个指向一个对象的内存,用free则直接释放内存,不会调用析构函数;如果用delete则先调用析构函数然后再释放内存
这有啥好澄清的。
malloc不会调用构造函数,free当然不调用析构函数。
new调用了构造函数,所以delete会调用析构函数。
所以才说malloc/free,new/delete不要混着用么。
【 在 as1302001954 的大作中提到: 】
: 不过我要澄明一点,如果用malloc申请一个指向一个对象的内存,用free则直接释放内存,不会调用析构函数;如果用delete则先调用析构函数然后再释放内存