社区
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变量,是否会产生内存泄漏?
...全文
108
6
打赏
收藏
-----非虚析构内存泄漏问题-----
class A {... ~A(); int i; } class B: public A {... ~B(); int j; } ... A a = new B(); delete a; 继承结构中的析构函数不是虚函数,如果在子类中定义对象或者指针则会产生内存泄漏,但象上文一样在子类里只有一个int变量,是否会产生内存泄漏?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
- **优势**:减少
内存泄漏
和悬挂指针的
问题
。 **7.5 Item 29:引用计数** - **概念**:跟踪对象引用的数量,当计数降为零时释放对象。 - **用途**:实现共享所有权的智能指针。 - **实现**:通过原子计数器或专门的...
高质量C++_C编程指南
- 使用不当可能导致
内存泄漏
或野指针
问题
。 **7.6 动态内存会被自动释放吗?** - 不会,动态分配的内存需要手动释放。 - 忘记释放内存会导致
内存泄漏
。 **7.7 杜绝“野指针”** - “野指针”指向已经释放的内存...
vs2008下C++对象内存布局
- **堆区(Heap)**:动态分配的内存位于堆区,程序员负责申请和释放,容易出现
内存泄漏
。 - **全局区/静态区(Data Segment)**:全局变量和静态变量存储在此,程序结束时自动释放。 - **文字常量区(Read-Only ...
04-Java-OOP-Basics.zip_java programming_oop
- **内存管理**:Java使用垃圾收集器自动管理内存,而C++需要程序员手动管理内存,容易引发
内存泄漏
问题
。 - **类型系统**:Java是强类型语言,编译时检查类型,而C++是弱类型语言,允许运行时类型转换。 - **...
高质量C编程指南(林锐编写)
- **常见内存错误及其解决策略**:识别并修复
内存泄漏
、野指针等
问题
。 - **指针与数组的区别**:掌握指针和数组之间的差异及其应用场景。 - **指针参数传递内存机制**:理解通过指针参数传递内存的具体过程。 - **...
C++ 语言
65,211
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章