q2110809471 2023-04-08 21:46 采纳率: 38.5%
浏览 21

引发了异常: 读取访问权限冲突


void MainWindow::on_actTab_SetSize_triggered()
{
    QWDialogSize* dlgTableSize = new QWDialogSize(this);               //这个是自定义对话框
    Qt::WindowFlags flags = dlgTableSize->windowFlags();
    dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);
    dlgTableSize->setRowColumn(theModel->rowCount(), theModel->columnCount());

    int ret = dlgTableSize->exec();
    if (ret == QDialog::Accepted)
    {
        int cols = dlgTableSize->columnCount();
        theModel->setColumnCount(cols);
        int rows = dlgTableSize->rowCount();
        theModel->setRowCount(rows);
    }
    delete dlgTableSize;
}
大佬们,为什么点击acttab时就报错说     引发了异常: 读取访问权限冲突。
  • 写回答

2条回答 默认 最新

  • H3T 2023-04-08 22:12
    关注

    在释放 QWDialogSize 对象时出现的悬空指针引起的。
    这里用了delete关键字来释放QWDialogSize对象,但是如果释放该对象之后仍然存在指向它的指针,这些指针就会变成悬空指针然后导致读取访问权限冲突。
     
    可以使用智能指针,比如std::unique_ptr,这样可以确保对象能正确地释放:

    void MainWindow::on_actTab_SetSize_triggered()
    {
        std::unique_ptr<QWDialogSize> dlgTableSize(new QWDialogSize(this));   // 使用 std::unique_ptr 管理对象生命周期
        Qt::WindowFlags flags = dlgTableSize->windowFlags();
        dlgTableSize->setWindowFlags(flags | Qt::MSWindowsFixedSizeDialogHint);
        dlgTableSize->setRowColumn(theModel->rowCount(), theModel->columnCount());
    
        int ret = dlgTableSize->exec();
        if (ret == QDialog::Accepted)
        {
            int cols = dlgTableSize->columnCount();
            theModel->setColumnCount(cols);
            int rows = dlgTableSize->rowCount();
            theModel->setRowCount(rows);
        }
    }
    

    这里不需要调用 delete,对象将在离开作用域时自动被释放。
     
    如果答案对您有所帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月8日

悬赏问题

  • ¥15 SQLServer怎么录入下标
  • ¥100 无网格伽辽金方法研究裂纹扩展的程序
  • ¥15 错误于library(org.Hs.eg.db): 不存在叫‘org.Hs.eg.db’这个名称的程序包,如何解决?
  • ¥60 求一个图片处理程序,要求将图像大小跟现实生活中的大小按比例联系起来的
  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活