2011-07-01 21 views
0

我正在開發一個「金字塔」遊戲,它使用搜索「最佳」移動的Minimax樹..但我的遊戲是凍結的。Visual Studio C++中的可用內存大小

我的推論是這是一個內存問題,但我只使用了124kb的內存。我可以使用新的操作員分配多少內存?或者,默認情況下分配給我的應用程序的內存限制是多少?

+0

你是什麼意思的「凍結」?你能否展示一些(最小的)代碼來證明這個問題? – Bart

+2

聽起來不像我缺乏記憶。聽起來像你有一個無限循環;錯誤的邏輯。 –

+3

您是否嘗試過調試代碼?當程序「凍結」時,暫停一下,看看發生了什麼(即檢查callstack和局部變量)。你的扣除不是扣除,這只是你調試代碼之前的猜測。在軟件開發中猜測是疲勞生活的祕訣。 –

回答

2

操作系統確定您在每個給定時間可以分配多少內存,從而使您的問題無法回答。

我會是你,我會顯示錯誤的代碼,而不是認爲它是編譯器或做錯的環境。在大多數平臺上,124kb都不是。

如果它不投擲bad_alloc,我真的懷疑你的新來電會失敗。這當然不是真正的問題。

+0

好的,這是一個大學項目。一個同學有這個問題,但我的應用程序運行良好,樹深度爲4,所以沒有問題=謝謝你的回答 – Rolilink

+0

聽起來像一個遞歸錯誤 – Grim

0

默認情況下沒有限制。

如果您分配較小的對象,通常可以在32位Windows上獲得1到1.5 GB的對象。

+0

如果沒有啓用大地址,則精確到2GB。否則它可能會高達3GB。 – Ajay

+0

@Ajay - 但有些地址空間是由代碼使用的,有些通常由於碎片而無法使用,所以1.5 GB更具有實際的限制。雖然超過了124k! –

+0

我同意。但技術上它是2GB。其次,代碼不是500 MB,最通常的! – Ajay

0

我不認爲內存問題會導致您的遊戲在它導致崩潰之前凍結。你可能在某個地方有一個無限循環。如果你對內存有問題,我會想象你會得到某種錯誤信息,而不是循環問題,它只是掛起。

0

這可能不是你消耗了所有的內存,但你正在消耗所有的CPU! 檢查你的遊戲程序的邏輯。

1

你也可以考慮看看可能的堆棧溢出。特別是如果你的算法涉及遞歸。

相關問題