2011-02-06 69 views
-1

我宣佈這個結構:動力學結構

struct matrix27 { 
    double mat27[1083][1083]; 
} a1; 

我的程序與此結構中運行。
但是,當我宣佈這個結構:

struct matrix27 { 
    double mat27[5034][5034]; 
} a1; 

我的程序將無法運行(它編譯,但是當我運行它,窗口阻止它「文件名.exe已停止工作」)。我想用動態聲明它, 我該怎麼做?

+6

你是什麼意思「我無法運行」?它不會編譯?它在運行時崩潰嗎?你看到什麼錯誤信息? – 2011-02-06 21:41:51

+0

它編譯,但是當我運行它時窗口停止它。「filename.exe已停止工作」。 – Jafar 2011-02-06 23:01:20

回答

4

我認爲5034^2*sizeof(double)對於您的平臺堆棧空間來說太大的內存空間。 (在我的平臺上它幾乎是200MB,並且一個程序試圖分配太多的堆棧空間崩潰。)您可以通過將內存放在堆上來繞過它。

並確保您閱讀C++ array FAQ

3

sbi是正確的。如果你真的想把這個結構放在堆棧上,你必須增加你的堆棧大小。如果您使用Visual Studio,可以選擇(項目)屬性 - >配置屬性 - >鏈接器 - >系統 - >堆棧儲備大小