父类提供虚析构函数,或者不提供虚析构函数,删除父类指针
时间:2011-12-08
来源:互联网
class Test
{
};
class Drived:public Test
{
int a;
double b;
};
int main()
{
Drived* pd=new Drived();
Test* p=pd;
delete p;
return 0;
}
vs2010下,挑时候,没有看到内存是否泄露???
什么原因????
不是说,当删除父类指针的时候,如果父类不提供虚析构函数,那么会引起内存泄露???
没有看到 出现问题。。。
作者: caddor 发布时间: 2011-12-08
作者: namelij 发布时间: 2011-12-08
记得primer中提到过,
如果你的类想成为 父类,那么建议析构函数设置为虚函数。。。
原因:内存泄露。。。。。。。。。
本来就木有泄露么,你试着在父类理由new一个试试
作者: caddor 发布时间: 2011-12-08
当 派生类有虚函数的时候, 如果父类不用虚析构函数,
删除父类指针,有问题。。。
作者: caddor 发布时间: 2011-12-08
作者: zzcmx2008 发布时间: 2011-12-08
{
};
class Drived:public Test
{
int* p;
double b;
public:
Drived()
{
p=new int(10);
}
~Drived()
{
delete p;
p=NULL;
}
};
int main()
{
Test* p=new Drived();
delete p;
return 0;
}
没有泄露内存
父类木有提供提供虚析构函数啊
作者: caddor 发布时间: 2011-12-08
class Test
{
};
class Drived:public Test
{
int* p;
double b;
public:
Drived()
{
p=new int(10);
}
~Drived()
{
delete p;
p=NULL;
}
};
int main()
{
Test* p=new Drived(……
析构了
作者: linyongzuo 发布时间: 2011-12-08
作者: linyongzuo 发布时间: 2011-12-08
作者: jptaozhantaozhan 发布时间: 2011-12-08
作者: luminos 发布时间: 2011-12-08
class Test
{
};
class Drived:public Test
{
int* p;
double b;
public:
Drived()
{
p=new int(10);
}
~Drived()
{
delete p;
p=NULL;
}
};
int main()
{
Test* p=new Driv……
你用什么工具测它有没有泄露内存的?
作者: uuussseeennn 发布时间: 2011-12-08

这肯定是有泄漏的,你看是很难看出来的,你循环10000次看看
作者: qscool1987 发布时间: 2011-12-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28