简单core问题的思考
来源:互联网 发布:js模拟鼠标滚轮 编辑:程序博客网 时间:2024/05/07 19:36
今天来一个问题单上面标着致命,对于一个菜鸟程序而言真是吓一跳,以为是运行时core造成测试无法继续。看了详细情况后才知是昨天已经处理的core问题,在系统退出的时候core了。
最近优化一个东西,由于是菜鸟,所以采用成熟模块的架构,模仿着写。
写了一个管理类manager,在此管理类中初使化所有数据。然后写一个公共接口类managerImp继承自公共模块的一个接口类BaseImp。然后把所以管理类中初使化的相关数据全部注册到managerImp中去。此时我就在析构managerImp中去调用各个管理类的相关释放函数。然而意外的是BaseImp中把注册进来的句柄也都全部释放了一次,因而造成了重复释放。
就按现在编程规范来说,谁申请就由谁来释放,尤其是对于这种实例会被多处管理器所引用地方,指针的释放要特别小心。此处架构一开始就用单例把相同实例管理在一起,然后用加锁的形式判断是否已析构,完全可以把这些资源放在这样的管理类中统一去释放,其他注册了此实例的类不去理会其构造与释放(因为这里实例是稳定的,同时其他注册类也能保证比此类先释放)。
开始core了之后就把堆栈信息发过来,由于代码写的时候注意下,而开始也没有把资源释放写进去,而由系统自己去回收,后来补上了,没有仔细推敲,转测之后才有这问题。这说明以后在有疑问的地方还是细心推敲。
走完问题单后下班路上想想,对于一个GDB都还是太会的菜鸟程序员,如果不是此处代码是自己已经熟识,能这么快清楚知道是重复释放的问题吗?但后来想了想,在堆栈信息是调用析构函数的时候core的,在这种情况也应该大多只能是重复释放了,如果是其他内存问题就应该在运行的时候core了。此次并不严重问题(测试好像不那么认为,不然也不会写个致命吓我了)让我又多的思考了一下下。
- 简单core问题的思考
- 一些简单问题的思考:
- 一个简单的问题引发的思考
- 工作遇到一个简单问题的思考
- 最简单的问题!最简单的思考!
- 关于Segmentation fault (core dumped)几个简单问题的整理
- 关于Segmentation fault (core dumped)几个简单问题的整理
- 关于Segmentation fault (core dumped)几个简单问题的整理
- 关于Segmentation fault (core dumped)几个简单问题的整理
- 关于Segmentation fault (core dumped)几个简单问题的整理
- 关于Segmentation fault (core dumped)几个简单问题的整理
- Core Data 的学习与思考(一)
- [另类思考] 简单的问题复杂着解决
- 乔布斯成功的简单秘方,坚持思考两个问题
- c基础,看似简单实则值得思考的问题
- 由简单小问题引发的思考和推理
- 简单但细节问题思考
- 简单的思考
- Extjs4 中Line chart使用Ajax数据源绘图
- ETL面试题
- //下载的四种方法
- 做的有点烦了
- 创建连接服务器
- 简单core问题的思考
- redo与undo
- Unix环境高级编程——第四章 目录和文件
- http://blog.csdn.net/ol_beta/archive/2010/10/27/5968817.aspx
- 离职了……
- UVa Problem 10213 How Many Pieces of Land? (土地分割)
- Eclipse RCP笔记
- U-Boot简介与嵌入式内核移植简介
- 随机显示广告的关键代码--4PM