-----非虚析构内存泄漏问题-----

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变量,是否会产生内存泄漏?
...全文
83 6 打赏 收藏 转发到动态 举报
写回复
用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变量不会了,它会自动释放。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧