C++未經處理的異常...stackoverflow(參數: 0x0000000000000001...)

今天碰到一個問題

c++編譯時一切正常,運行時出錯

0x00007FF6925BE108 處有未經處理的異常(在 AutoProject.exe 中): 0xC00000FD: Stack overflow (參數: 0x0000000000000001, 0x000000E3CE403000)。

Unhandled exception at 。。。。。 : Stack overflow (parameters: 0x0000000000000001。。。。。

然後調試發現,是預定義的數組太大了,我這個數組只定義了大約1M

void write(){
    char writeBuffer[1048576];            // 1 MBytes
    ....
}

如果要繼續使用這樣的大數組的話,當然可以根據new, delete來創建數組,

void write(){
    char writeBuffer* = new char[1048576];            // 1 MBytes
    ....
    delete[] writeBuffer;
}

還有一種解決方式,尤其是函數調用頻繁的時候,可以把該數組定義成全局變量,這樣效率會比較高

char writeBuffer[1048576];            // 1 MBytes
void write(){    
    ....
}

第三種方法就是調整編譯器的預定義設置,這種方式會對所有一起編譯的項目都帶來影響,所以通常情況不推薦這樣做。

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