你是否聲明這是一個函數或方法中的局部變量?如果是的話,這是一個典型的堆棧溢出。對於VS2010,請參見http://msdn.microsoft.com/en-us/library/8cxs58a6%28v=vs.100%29.aspx
保留值指定虛擬內存中的總堆棧分配。對於x86和x64機器,默認堆棧大小爲1 MB。在Itanium芯片組上,默認大小爲4 MB。
所以一個掛載數組的浮點數(假設每個浮點數爲4個字節)的時鐘速度高達4MB - 您已經在這裏通過了默認棧限制。
請注意,即使你有一個安騰你不會要能夠使用所有4MB的 - 參數,例如,也需要被存儲在堆棧上,看到http://www.csee.umbc.edu/~chang/cs313.s02/stack.shtml
現在,你可能只是增加堆棧大小,但有一天你會需要使用更大的陣列,所以這是一個消耗戰,你不會贏。這是一個最好的解決辦法,換句話說,而不是:
float stuff[1024 * 1024];
你把它聲明爲:
float *stuff = new float[1024 * 1024];
// do something interesting and useful with stuff
delete[] stuff;
而不是被這個現在將在堆上分配在棧上。請注意,這是而不是與Robert Harvey在他的回答中提到的堆一樣;您在這裏沒有/ HEAP選項的限制。
如果您無法在實際代碼的前面對其進行故障排除,您的整個工作環境可供您使用,那麼我們希望有什麼希望能夠在沒有工具和不可見的情況下找出答案?它*是一個與內存相關的問題;你將不得不做一些調試並找出原因。 –
如果您的二維數組不需要連續,請嘗試製作1024個獨立的1024個大小的浮點數組分配。 –