簡體   English   中英

程序在Visual Studio中運行,但釋放可執行文件崩潰

[英]Program runs in visual studio but release executable crashes

我已將其追溯到我寫入txt文件時。 我檢查了它是否已打開,並在崩潰前向該文件寫入了一行。

VS2012外部調試器Unhandled exception at 0x77112D24 (ntdll.dll) in DTC.exe: 0xC0000005: Access violation writing location 0x10000000我拋出此Unhandled exception at 0x77112D24 (ntdll.dll) in DTC.exe: 0xC0000005: Access violation writing location 0x10000000並將我指向fstream頭內部的此函數virtual __CLR_OR_THIS_CALL ~basic_filebuf()

void main()
{
    vector<string> fileNames;
    vector<time_t> fileTimes;

    CImg<unsigned char> image("Image.bmp");

    ofstream out("Result_Data.txt",ios::out|ios::app);
    if(!out.is_open())
    {
        cout<<"File Not Opened!\n";
    }
    unsigned long originalSize = my_image_functions::getFileSize("Image.bmp");
    time_t before = 0, after = 0;

    before=clock();
    my_image_functions::compressDualLevelBTC(image,"dualBTC_2_8.dtc",2,8);
    after = clock();

    fileTimes.push_back(after-before);
    fileNames.push_back("dualBTC_2_8.dtc");

    //...
    /* Several of these segments*/
    //...


    before=clock();
    my_image_functions::compressDualLevelBTC(image,"dualBTC_32_64.dtc",32,64);
    after = clock();

    fileTimes.push_back(after-before);
    fileNames.push_back("dualBTC_32_64.dtc");

    while(!fileNames.empty() && !fileTimes.empty())
    {
        out<< fileNames.back() <<";"<< fileTimes.back() <<";"<< my_image_functions::getFileSize(fileNames.back()) << ";" << ((float) originalSize)/my_image_functions::getFileSize(fileNames.back()) << endl;
        fileNames.pop_back();
        fileTimes.pop_back();
        if(!out.is_open())
        {
            cout<<"File Not Opened!\n";
        }
    }
    out.close();
}

最可能的原因是運行發行版時缺少所需的dll。

在可執行文件上運行Dependency Walker: http//dependencywalker.com/

您似乎正在檢查文件是否打開。 如果不是,則打印消息“未打開”,但是仍然繼續嗎?

ofstream out("Result_Data.txt",ios::out|ios::app);
if(!out.is_open())
{
    cout<<"File Not Opened!\n";
}

暫無
暫無

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

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