最近寫程序時,需要將一個一維數組編程二維數組,很簡單,寫完之后,運行錯誤!
提示:Process returned -1073741571 (0xC00000FD)
剛開始寫的代碼如下:
#include <iostream> using namespace std; int main() { unsigned short frame[1000000] = {0}; unsigned short frame2[10][100000]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 100000; j++) { frame2[i][j] = frame[i + j * 10]; } } }
糾結了我好長時間。。。
問題所在:棧的默認內存空間為1M左右,所以會導致內存溢出。
也就是數組定義的太大了。
解決方法:
聲明成全局或static的,這兩種變量不壓棧。
代碼:
把數組聲明為static,就沒有問題了
#include <iostream> using namespace std; int main() { static unsigned short frame[1000000] = {0}; static unsigned short frame2[10][100000]; for (int i = 0; i < 10; i++) { for (int j = 0; j < 100000; j++) { frame2[i][j] = frame[i + j * 10]; } } }