簡體   English   中英

“myprogram.exe 中 0x000007FEFD5D7C8A(ole32.dll)處的未處理異常:0xC0000005:訪問沖突讀取位置 0xFFFFFFFFFFFFFFFF”

[英]"Unhandled exception at 0x000007FEFD5D7C8A (ole32.dll) in myprogram.exe: 0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF"

我正在嘗試使用 QfileDialog(作為靜態 fct)讓用戶選擇和讀取“.txt”文件,如下所示:

void VisOCMConfig::readNmbTiles()
{
    QString  m_findFile;
    m_findFile = QFileDialog::getOpenFileName(0, tr("Open TextFile"),
                                              QDir::homePath(), tr("Text files (*.txt)"));

    QFile myfile(m_findFile);
    if (!myfile.open(QIODevice::ReadOnly | QIODevice::Text))
        return;
    else 
        while (!myfile.atEnd()) 
        {
            m_scanPos = myfile.readLine();
            m_nmbofLines++;
        }

    myfile.close();
    qDebug() << "Scan Positions: (" << m_scanPos.size() << "): " << m_scanPos;
    m_nmbofScan->setText(QString("#Tiles: %1").arg(m_nmbofLines));
}

其中 m_scanPos 是在 VisOCMConfig.h 中初始化的 QByteArray。

當我運行程序時,它工作正常,直到突然出現中斷並顯示以下消息:

VisOCMConfig.exe 中 0x000007FEFD5D7C8A (ole32.dll) 處的未處理異常:0xC0000005:訪問沖突讀取位置 0xFFFFFFFFFFFFFFFF

我在其他問題上讀到這可能是由於使用了空指針,但我仍然迷失了它。 你能認出我的錯誤嗎?

我一直有同樣的問題。 嘗試使用“DontUseNativeDialog”作為標志。 我相信這可以解決崩潰問題,但隨后您會遇到一個非本地對話框。

我也有同樣的問題。 解決方案也是使用非本地 QFileDialog。 實際上它只出現在調試模式下。 在發布模式下,一切都很好。

相同的代碼在 QT4.8 下工作。 不知何故,使用 QT5.6 時並非如此。

那些對這個問題投反對票的人(我投了贊成票)非常歡迎對我的回答投反對票。

我在 Qt 5.2.1 中遇到了同樣的問題 - 使用 QFileDialog::getOpenFileName() 后在 ole32.dll 中出現相同的異常 - 不是立即而是在 10 - 60 秒后。 如果我繼續申請並且打開文件后什么都不做,就會發生這種情況,只需等待一段時間。 使用@aeson 和@guest 建議的“DontUseNativeDialog”可以避免這個問題。 我希望這些信息可以幫助其他人。

@MartinBonner 我認為標簽應該改回 QFileDialog 因為問題顯然與它有關

我遇到了同樣的錯誤 - 我的應用程序在調試模式下崩潰了。

如果您在發生此問題時檢查調用堆棧,您會注意到該問題與 NetworkItemFactory.dll 組件有關。

這里描述了一個類似的問題: VS2013下marshal.cxx中的未處理異常

Microsoft 修復了此問題,因此解決方案是應用 Microsoft 的修補程序Windows6.1-KB2718841

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM