我宣佈這個結構:動力學結構
struct matrix27 {
double mat27[1083][1083];
} a1;
我的程序與此結構中運行。
但是,當我宣佈這個結構:
struct matrix27 {
double mat27[5034][5034];
} a1;
我的程序將無法運行(它編譯,但是當我運行它,窗口阻止它「文件名.exe已停止工作」)。我想用動態聲明它, 我該怎麼做?
我宣佈這個結構:動力學結構
struct matrix27 {
double mat27[1083][1083];
} a1;
我的程序與此結構中運行。
但是,當我宣佈這個結構:
struct matrix27 {
double mat27[5034][5034];
} a1;
我的程序將無法運行(它編譯,但是當我運行它,窗口阻止它「文件名.exe已停止工作」)。我想用動態聲明它, 我該怎麼做?
我認爲5034^2*sizeof(double)
對於您的平臺堆棧空間來說太大的內存空間。 (在我的平臺上它幾乎是200MB,並且一個程序試圖分配太多的堆棧空間崩潰。)您可以通過將內存放在堆上來繞過它。
並確保您閱讀C++ array FAQ。
sbi是正確的。如果你真的想把這個結構放在堆棧上,你必須增加你的堆棧大小。如果您使用Visual Studio,可以選擇(項目)屬性 - >配置屬性 - >鏈接器 - >系統 - >堆棧儲備大小。
你是什麼意思「我無法運行」?它不會編譯?它在運行時崩潰嗎?你看到什麼錯誤信息? – 2011-02-06 21:41:51
它編譯,但是當我運行它時窗口停止它。「filename.exe已停止工作」。 – Jafar 2011-02-06 23:01:20