Qt程序運行時出現Error - RtlWerpReportException failed with status code :-1073741823. Will try to launch the process directly原因總結


####### Qt程序在運行時出現了上述錯誤,並且我的程序出現了數據錯亂的情況,百度后說是因為內存原因,段錯誤,仔細查看了自己的代碼並沒有發現 指針變量未初始化的情況。
####### 通過調試得出原因:QNetworkManager類,在使用時,可能在同一時間段內QNetworkRequestattribute被兩個對象同時設定和使用,導致出現數據錯亂,數據無法正常取出的情況!
####### 解決辦法: 重新建立QNetworkManager分別針對不同的對象,這樣它們attribute的使用區域不會重疊
我編寫這個函數的部分代碼如下:

   // 請求開始
void Request::get(void *attribute, QUrl url)
{
    QNetworkRequest request(url);
    request.setAttribute(QNetworkRequest::Attribute(QNetworkRequest::User + 1), QVariant::fromValue(attribute));
    this->get(request);
}
    // 請求完成
    QVariant attribute = request.attribute(QNetworkRequest::Attribute(QNetworkRequest::User + 1));
    if(attribute.isNull())
    {
        emit dataRequested(receivedData);
    }
    else
    {
        void * attributePointer = attribute.value<void *>();
        emit dataRequested(attributePointer, receivedData);
    }
 // 出錯位置 
    // attribute首先在這里被占用
    void *widgetAttribute = (void *)homeMovieItem;
    this->homeImgRequest->get(widgetAttribute, QUrl(homeItem->imgPath));
    connect(this->imgRequest, SIGNAL(dataRequested(void*,QByteArray)), this, SLOT(onReceivedItemImg(void*,QByteArray)));
    // 這里attribute再次被占用
    void *widgetAttribute = (void *)actressWidgetItem;
    this->actressImgRequest->get(widgetAttribute, QUrl(actressItem->imgPath));
    connect(this->imgRequest, SIGNAL(dataRequested(void*,QByteArray)), this, SLOT(onReceivedActressImg(void*,QByteArray)));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM