<Qt> 应用单例模式时重复delete pointer导致_CrtIsValidHeapPointer(block)错误

在Qt桌面应用中,使用单例模式管理窗口时遇到_CrtIsValidHeapPointer错误。错误源于析构时的内存管理问题,由于静态对象生命周期与Qt框架的管理冲突,导致对象被多次删除。解决方法是正确管理对象生命周期,避免内存泄露。结论是遵循标准编程实践,避免过度优化。
摘要由CSDN通过智能技术生成

前景:在写Qt桌面应用时,有一个场景是TabWidget管理四个子窗口,每个子窗口都只能有一个实例方便窗口的切换,自然而然就想到要用singleton-pattern,我应用时能正常启动,但是关闭main window的时候每次都弹出_CrtIsValidHeapPointer(block) …

既然是关闭窗口的时候弹出的错误,那么肯定是main window析构的时候发生了错误,根据错误信息也能知道是堆内存中出错了。
当时我的单例模式是这么写的(参考了scott meyers的版本):

class ConfParas : public QWidget
{
    Q_OBJECT

public:
    static ConfParas* getInstance()
    {
        static ConfParas theConfParas;
        return &theConfParas;
    }
    explicit ConfParas(QWidget *parent = 0);
    ConfParas(
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值