2013-08-27 51 views
0

我開始在測試一個相當大的程序時遇到了Xcode 4.6.3中的BAD_ACCESS錯誤。我追溯到以下幾點的錯誤:內存分配錯誤,可能在GDB中

int main(int argc, const char * argv[]) 
{ 
    float test1[1024][1536]; 
    float test2[340][1536]; 
    std::cout << "Made it up to this point!\n"; 

    return 0; 
} 

上述程序將運行良好。但是,如果我增加數組的大小超出了[340] [1536],它會與

EXC_BAD_ACCESS(code=2, address=0x7fff00000de4) 

崩潰顯然,調試器不能分配足夠的存儲器用於程序使用。關於如何解決問題的任何想法?

編輯:我還發現,我得到的靜態分配錯誤,如

float a[123][456] 

其精細提前一天的工作。所以,這可能是一個編譯器選項。

+1

看來,你用完了堆棧內存,爲您的當前程序失去任何東西不能叫不止。嘗試動態分配數組,至少是第二個數組。 –

+0

這有效,但是當涉及到我正在測試的實際程序時,這意味着我必須更改其他人編寫的方法(並在其他項目中正常工作)。很可能我有一個不正確的編譯器選項。 – Totoro

+0

您可以嘗試增加堆棧大小:http://stackoverflow.com/questions/2092495/increase-stack-size-with-xcode –

回答

1

由於主要一旦你將無法通過使這些陣列靜態

int main(int argc, const char * argv[]) 
{ 
    static float test1[1024][1536]; 
    static float test2[340][1536]; 
    std::cout << "Made it up to this point!\n"; 

    return 0; 
} 
+0

這工作。另一種方法是動態聲明它們,但是當你在main()中時,它更容易編碼和工作。 – Totoro