- 主题:刚才解决了一个内存泄露的 BUG
老鱼好用功啊,用C++就像在道口跳舞。。。
【 在 hgoldfish 的大作中提到: 】
: 本青日常使用 c++ 写一些偏重计算和内存存储的微服务。从来不使用裸指针,一般都是用 shared_ptr 或者 QScopedPointer<> 这种智能指针。对象与对象之间,采用生命周期依赖的方式来管理作用域。也就是每一个对象,必须依附于它的父对象。当父对象删除的时候,所有子对象也跟着销毁。
: 原以为已经万无一失了。没想到今天发现了一个内存泄露。定位后,发现原来是因为我忘了给个类型搞虚的析构函数。
: struct RecordPrivate: QSharedData {}
: ...................
--
FROM 111.199.251.*
析构函数要用虚函数,这是最基本的一个准则吧。。。
【 在 hgoldfish 的大作中提到: 】
: 字段在析构函数里面销毁的啊。
: 父类没有字段,所以它析构函数里面啥都不销毁。
: 子类有字段,需要调到子类的析构函数才会销毁。
: ...................
--
FROM 183.199.184.*
算是一个最佳实践,可以避免大部分的问题。
【 在 overcomeunic 的大作中提到: 】
: 这个也太绝对了
: 你看STL里面哪个容器的析构函数是虚的
: 如果我的派生类没有额外的资源需要处理,我只是在我的派生类做一些功能增强
: ...................
--
FROM 183.199.184.*