今天碰到一個問題
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(){
....
}
第三種方法就是調整編譯器的預定義設置,這種方式會對所有一起編譯的項目都帶來影響,所以通常情況不推薦這樣做。