Qt讀取大文件報錯

編譯器:minGW

操作系統:win10 64位

在項目中使用QFile::readAll()讀取文件時,有些文件會直接導致程序崩潰。

通過調試qt源碼,發現在分配內存的時候拋出異常bad_alloc,錯誤的內存分配

查資料瞭解到32位程序可申請的最大堆內存不會超過2G,受操作系統等各方面因素影響,申請到的內存往往會更小

以下代碼可獲取到可申請的最大內存。每次的結果略微會有差異。經測試,編譯64位程序不會受到影響

    int n = 1;
    int size_ = 1024*1024;
    while(true)
    {
        void* size = malloc(size_*n);
        if(size == NULL)
        {
            break;
        }
        else
        {

            n++;

        }
        std::cout << n  << "MB" << std::endl;
        free(size);
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章