社区
C++ 语言
帖子详情
-----非虚析构内存泄漏问题-----
snowfog
2005-06-23 10:31:50
class A
{...
~A();
int i;
}
class B: public A
{...
~B();
int j;
}
...
A a = new B();
delete a;
继承结构中的析构函数不是虚函数,如果在子类中定义对象或者指针则会产生内存泄漏,但象上文一样在子类里只有一个int变量,是否会产生内存泄漏?
...全文
90
6
打赏
收藏
-----非虚析构内存泄漏问题-----
class A {... ~A(); int i; } class B: public A {... ~B(); int j; } ... A a = new B(); delete a; 继承结构中的析构函数不是虚函数,如果在子类中定义对象或者指针则会产生内存泄漏,但象上文一样在子类里只有一个int变量,是否会产生内存泄漏?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Amour81
2005-06-23
打赏
举报
回复
一般引起泄露的是指针。
foochow
2005-06-23
打赏
举报
回复
楼主的情况当然不会内存泄漏,不过一个类作为基类时习惯上都把析构函数定义成虚函数
brianlu
2005-06-23
打赏
举报
回复
不好意思,写错了
A * a = new B();
delete a;
delete调用的是~A(),而不会先调用~B(),再调用~A();
这样的后果是B的对象没有被处理掉,潜在危险.
brianlu
2005-06-23
打赏
举报
回复
int是基本类型变量,不会有内存释放的问题。
不过建议你还是养成良好的编程习惯。
A * a = new B();
delete a;
delete调用的是~B(),而不是~A();
所以还是定义Virtual Deconstructor 比较好
beyondtkl
2005-06-23
打赏
举报
回复
不会的。。如果里面有 类似 char* 这样的指针变量 并且分配了空间 而其 析构函数不是 virtual的 那么就可能内存泄漏。。
junguo
2005-06-23
打赏
举报
回复
int变量不会了,它会自动释放。
more-effective-c++-cn.pdf
more-effective-c++-cn.pdf 很好很实用。
高质量C++_C编程指南
高质量C++_C编程指南,一本不可多的的学习资料
vs2008下C++对象内存布局
详细理解vs2008C++编程内存使用情况!!值得一看...
04-Java-OOP-Basics.zip_java programming_oop
Object-Oriented Programming in Java • Similarities with C++ • Differences C++
高质量C编程指南(林锐编写)
高质量C编程指南(林锐博士编写),一本面试C语言时的好书。
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章